单片机基础讲解
指令的寻址方式
为了弄清楚什么是寻址方式,从以下的指令着手进行研究。
MOV P1,#0FFH
MOV R7,#0FFH
这些指令都是将一些数据送到相应的位置中去,分析MOV P1,#0FFH这条指令可以看到,MOV 是命令动词,决定做什么事情。这条指令的用途是数据的传递。数据传递必须要有一个源――要送什么数,还要有一个目的――要把这个数送到什么地方去。在上述指令中,要送的数是0FFH,而要送达的地方(目的地)是P1这个寄存器。在数据传递类指令中,一般都将目的地写在紧跟择令的后面,而将源操作数写在最后。
一、立即寻址
例如:MOV A,#30

二、直接寻址
在这种寻址方式中,操作数直接给出的是参与运算或传送的数据所在的地址,即该地址单元的内容是操作的对象。
例如:MOV A,30H

指令中的30H操作数就是直接寻址方式,它的功能是把RAM中的30H单元的内容传送到累加器A中 。
三、寄存器寻址
寄存器寻址是指操作数存放于寄存器中,对寄存器中的数据进行操作,寄存器包括通用寄存器R0~R7、累加器A,寄存器B,地址指针DPTR和进位标志位CY。
工作寄存器的选择有程序状态字寄存器中的RS0、RS1决定。
例如:MOV A,R1

四、寄存器间接寻址
寄存器间接寻址方式的寄存器中存放的是操作数的地址,即操作数是通过寄存器间接得到的,因此称之为寄存器间接寻址。
在这种寻址方式中,寄存器名称前面加前缀标志@.可作为间接寻址用的通用工作寄存器有R0和R1、堆盏指针寄存器SP、地址指针寄存器DPTR。
假定R0寄存器的内容是30H,则指令的功能是以R0寄存器内容30H为地址,把30H地址单元中的内容送到累加器A.
例如:MOV A,@R0

五、变址寻址
这种寻址方式是以DPTR或PC为基地址寄存器,以累加器A为变址寄存器,两者内容相加形成操作数所在的单元地址。
例如:MOVC A,@A+DPTR
其功能是把DPTR和A中的内容相加,其和为操作数所在的地址,把该地址单元的内容传送到A.假设A中原有内容为34H,DPTR的内容为1200H,则该指令源操作数的地址为1200H+34H=1234H.又设ROM的1234H单元的内容为0AH,则指令执行的结果累加器A的值改变为0AH.

六、位寻址
指令的功能是将位地址20H置1的操作。可以进行位寻址的地址空间有片内RAM中的位寻址区(20H~2FH单元)和可以位寻址的特殊功能寄存器。
七、相对寻址
例如:JZ 30H
当A=0时,PC←PC+2+REL,若A≠0,则PC←PC+2。
指令格式中符号意义说明
● Ri 当前选中的工作寄存器组中可作为地址指针的两个工作寄存器R0和R1(i=0或1)
● #data 8位立即数,即包括在指令中的8位常数。
● #data 16位立即数,即包括在指令中的16位常数。
● direct 8位片内RAM单元(包括SFR)的直接地址。
● bit 片内RAM或特殊功能寄存器的直接寻址位地址。
● @ 间接寻址方式中,表示间接寄存器的符号。
● / 位操作指令中,表示对该位先取反再参与操作,但不影响该位的原值。
● → 指令操作流程,将箭头左边的内容送入箭头右边的单元格内。
3
上一篇:没有了
下一篇:AT89C52内部寄存器一览表
下一篇:AT89C52内部寄存器一览表
最新评论共有 0 位网友发表了评论
查看所有评论
发表评论
热点关注

