注册会员 用户登陆
热门关键字:  plc  单片机设计  加工误差解决方法  电机  西门子PLC

单片机指令(二)

发布时间:2006-08-21 关键字: 指令 this.widthscreen.width-333 this.width
  1. 数据传递类指令

(3)以直接地址为目的操作数的指令

<--mstheme-->
<--mstheme-->汇编指令<--mstheme--> <--mstheme-->例子<--mstheme--> <--mstheme-->说明<--mstheme-->
<--mstheme-->MOV direct,A<--mstheme--> <--mstheme-->MOV 20H,A<--mstheme--> <--mstheme--> <--mstheme-->
<--mstheme-->MOV direct,Rn<--mstheme--> <--mstheme-->MOV 20H,R1<--mstheme--> <--mstheme--> <--mstheme-->
<--mstheme-->MOV direct1,direct2<--mstheme--> <--mstheme-->MOV 20H,30H<--mstheme--> <--mstheme--> <--mstheme-->
<--mstheme-->MOV direct,@Ri<--mstheme--> <--mstheme-->MOV 20H,@R1<--mstheme--> <--mstheme--> <--mstheme-->
<--mstheme-->MOV direct,#data<--mstheme--> <--mstheme-->MOV 20H,#34H<--mstheme--> <--mstheme--> <--mstheme-->
<--mstheme--> <--mstheme--> <--mstheme--> <--mstheme--> <--mstheme--> <--mstheme-->
<--mstheme-->

 (4)以间接地址为目的操作数的指令

<--mstheme-->
<--mstheme-->汇编指令<--mstheme--> <--mstheme-->例子<--mstheme--> <--mstheme-->说明<--mstheme-->
<--mstheme-->MOV @Ri,A<--mstheme--> <--mstheme-->MOV @R0,A<--mstheme--> <--mstheme--> <--mstheme-->
<--mstheme-->MOV @Ri,direct<--mstheme--> <--mstheme-->MOV @R1,20H<--mstheme--> <--mstheme--> <--mstheme-->
<--mstheme-->MOV @Ri,#data<--mstheme--> <--mstheme-->MOV @R0,#34H<--mstheme--> <--mstheme--> <--mstheme-->
<--mstheme--> <--mstheme--> <--mstheme--> <--mstheme--> <--mstheme--> <--mstheme-->
<--mstheme--> <--mstheme--> <--mstheme--> <--mstheme--> <--mstheme--> <--mstheme-->
<--mstheme--> <--mstheme--> <--mstheme--> <--mstheme--> <--mstheme--> <--mstheme-->
<--mstheme-->

 (5)十六位数的传递指令

<--mstheme-->
<--mstheme-->汇编指令<--mstheme--> <--mstheme-->例子<--mstheme--> <--mstheme-->说明<--mstheme-->
<--mstheme-->MOV DPTR,#data16<--mstheme--> <--mstheme-->MOV DPTR,#1324H<--mstheme--> <--mstheme--> <--mstheme-->
<--mstheme--> <--mstheme--> <--mstheme--> <--mstheme--> <--mstheme--> <--mstheme-->
<--mstheme-->

  8051是一种8位机,这是唯一的一条16位立即数传递指令,其功能是将一个16位的立即数送入DPTR中去。其中高8位送入DPH,低8位送入DPL。例:MOV DPTR,#1234H,则执行完了之后DPH中的值为12H,DPL中的值为34H。反之,如果我们分别向DPH,DPL送数,则结果也一样。如有下面两条指令:MOV DPH,#35H,MOV DPL,#12H。则就相当于执行了MOV DPTR,#3512H。

综合练习:

     

  1. 给出每条指令执行后的结果
    <--mstheme-->
    <--mstheme-->汇编指令<--mstheme--> <--mstheme-->执行后的结果<--mstheme--> <--mstheme--><--mstheme--> <--mstheme-->正确答案<--mstheme-->
    <--mstheme-->MOV 23H,#30H<--mstheme--> <--mstheme-->(23h)=?<--mstheme--> <--mstheme--><--mstheme--> <--mstheme-->(23h)=30h<--mstheme-->
    <--mstheme-->MOV 12H,#34H<--mstheme--> <--mstheme-->(12h)=?<--mstheme--> <--mstheme--><--mstheme--> <--mstheme-->(12h)=34h<--mstheme-->
    <--mstheme-->MOV R0,#23H<--mstheme--> <--mstheme-->(R0)=?<--mstheme--> <--mstheme--><--mstheme--> <--mstheme-->(R0)=23H<--mstheme-->
    <--mstheme-->MOV R7,#22H<--mstheme--> <--mstheme-->(R7)=?<--mstheme--> <--mstheme--><--mstheme--> <--mstheme-->(R7)=22H<--mstheme-->
    <--mstheme-->MOV R1,12H<--mstheme--> <--mstheme-->(R1)=?<--mstheme--> <--mstheme--><--mstheme--> <--mstheme-->(R1)=34H<--mstheme-->
    <--mstheme-->MOV A,@R0<--mstheme--> <--mstheme-->(A)=?<--mstheme--> <--mstheme--><--mstheme--> <--mstheme-->(A)=30H<--mstheme-->
    <--mstheme-->MOV 34H,@R1<--mstheme--> <--mstheme-->(34H)=?<--mstheme--> <--mstheme--><--mstheme--> <--mstheme-->(34H)=34H<--mstheme-->
    <--mstheme-->MOV 45H,34H<--mstheme--> <--mstheme-->(45H)=?<--mstheme--> <--mstheme--><--mstheme--> <--mstheme-->(45H)=34H<--mstheme-->
    <--mstheme-->MOV DPTR,#6712H<--mstheme--> <--mstheme-->(DPTR)=?<--mstheme--> <--mstheme--><--mstheme--> <--mstheme-->(DPTR)=6712H<--mstheme-->
    <--mstheme-->MOV 12H,DPH<--mstheme--> <--mstheme-->(12H)=?<--mstheme--> <--mstheme--><--mstheme--> <--mstheme-->(12H)=67H<--mstheme-->
    <--mstheme-->MOV R0,DPL<--mstheme--> <--mstheme-->(R0)=?<--mstheme--> <--mstheme--><--mstheme--> <--mstheme-->(R0)=12H<--mstheme-->
    <--mstheme-->MOV A,@R0<--mstheme--> <--mstheme-->(A)=?<--mstheme--> <--mstheme--><--mstheme--> <--mstheme-->(A)=67H<--mstheme-->
    <--mstheme-->

说明:上表中

<--mstheme--><--msthemelist-->
javascript:if(this.width>screen.width-333)this.width=screen.width-333"> <--mstheme-->各条指令顺序执行;<--mstheme--><--msthemelist-->
javascript:if(this.width>screen.width-333)this.width=screen.width-333"> <--mstheme-->用括号括起来代表内容,如(23H)则代表内部RAM23H单元中的值,(A)则代表累加器A单元中的值。<--mstheme--><--msthemelist-->
<--mstheme-->

 

  1. 上机练习:
    1. 进入DOS状态,进入WAVE所在的目录,例D:\WAVE
    2. 键入MCS51,出现如下画面
      <--mstheme-->
      <--mstheme-->图1<--mstheme-->
      <--mstheme-->javascript:if(this.width>screen.width-333)this.width=screen.width-333"><--mstheme-->
      <--mstheme-->
    3. 按File->Open,出现对话框后,在Name处输入一个文件名(见图2),如果是下面列表中已存在的,则打开这个文件,如果不存在这个文件,则新建一个文件(见图3)
      <--mstheme-->
      <--mstheme-->图2<--mstheme-->
      <--mstheme-->javascript:if(this.width>screen.width-333)this.width=screen.width-333"><--mstheme-->
      <--mstheme-->图3<--mstheme-->
      <--mstheme-->

      javascript:if(this.width>screen.width-333)this.width=screen.width-333"><--mstheme-->

      <--mstheme-->
    4. 在空白处将上面的程序输入。见图4。用ALT+A汇编通过。用F8即可单步执行,在执行过程中注意观察屏幕左边的工作寄存器及A累加器中的值的变化。
      <--mstheme-->
      <--mstheme-->图4<--mstheme-->
      <--mstheme-->javascript:if(this.width>screen.width-333)this.width=screen.width-333"><--mstheme-->
      <--mstheme-->
    5. 内存中值的变化在此是看不到的,可以用如下方法观察(看图5):将鼠标移到DATA,双击,则光标进入此行,此时可以键盘上的上下光标键上下翻动来观察内存值的变化。本行的最前面DATA后面的数据代表的是“一段”的开始地址,如现在为20H,再看屏幕的最上方,数字从0到F,显示两者相加就等于真正的地址值,如现在图上所示的内存20H、21H、22H、23H中的值分别是FBH 、0EH、E8H、30H。
      <--mstheme-->
      <--mstheme-->图5<--mstheme-->
      <--mstheme-->javascript:if(this.width>screen.width-333)this.width=screen.width-333"><--mstheme-->
      <--mstheme-->
    6. 当运行完程序后,即进入它的反汇编区,不是我们想要的东西。为了再从头开始,可以用CTRL+F2功能键复位PC值。注意此时不会看到原来的窗口,为看到原来的窗口,请用ALT+4或ALT+5等来切换。当然以上操作也可以菜单进行。CTRL+F2是程序复位,用RUN菜单。窗口用WINDOWS菜单。

最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册