累加器 ABC 寄存器B 进、借位标志位,或位累加器 间接寄存器或基址寄存器的前缀 指定位求反 (x)—x中的内容 (x))—x中的地址中的内容 $—当前指令存放的地址
A —— 累加器 B —— 寄存器B C —— 进、借位标志位,或位累加器 @ —— 间接寄存器或基址寄存器的前缀 / —— 指定位求反 (x)—— x中的内容 ((x))——x中的地址中的内容 $ —— 当前指令存放的地址
、寻址方式 寻找操作数存放单元的地址的方式,共6种方式。 立即数寻址 所要找的操作数是一二进制数或十进制数,出现在指令中, 用“#”作前缀 MOVA,#20H 2、寄存器寻址 操作数存放在工作寄存器R0~R7中,或寄存器B中。 MOV A R2 3、直接寻址 指令中直接给出操作数的地址。 MOV A, 30H MOV 30H, DPH
三、寻址方式 寻找操作数存放单元的地址的方式,共6种方式。 1、立即数寻址 所要找的操作数是一二进制数或十进制数,出现在指令中, 用“#”作前缀 MOV A,#20H 2、寄存器寻址 操作数存放在工作寄存器R0 ~ R7中,或寄存器B中。 MOV A,R2 3、直接寻址 指令中直接给出操作数的地址。 MOV A,30H MOV 30H,DPH
4、寄存器间接寻址 指令中寄存器的内容作为操作数存放的地址,在工作上间接寻 址寄存器前用“@”表示前缀。 例如:“一本书放在甲抽屉中,上了锁;其开锁的钥匙放在乙 抽屉中,乙抽屉也上了锁。问如何才能取到哪本书?” 这就是一个间接寻址的问题,要经过两次寻址才能找到哪本书。 而寄存器间接寻址也是同样。 例如:MoV30H,#20H;书放在甲抽屉中 MOV RO, #30H ;甲抽屉的钥匙放在乙抽屉中 MOV A, aRO ;取书,A中←20H 此例中,20成是那本书;30就当成是甲抽屉月」 R0就当成是乙抽屉,执行的结果就是将20H这个立即数装入A中 期间也经历了两次寻址,即间接寻址
;书放在甲抽屉中 ;甲抽屉的钥匙放在乙抽屉中 ;取书 ,A中 20H MOV 30H,#20H MOV R0,#30H MOV A,@R0 此例中,20H就当成是那本书;30H就当成是甲抽屉; R0就当成是乙抽屉,执行的结果就是将20H这个立即数装入A中。 期间也经历了两次寻址,即间接寻址。 4、寄存器间接寻址 指令中寄存器的内容作为操作数存放的地址,在工作上间接寻 址寄存器前用“@”表示前缀。 例如: “一本书放在甲抽屉中,上了锁;其开锁的钥匙放在乙 抽屉中,乙抽屉也上了锁。问如何才能取到哪本书?” 这就是一个间接寻址的问题,要经过两次寻址才能找到哪本书。 而寄存器间接寻址也是同样。 例如:
5、变址寻址 操作数地址=变地址+基地址 基地址寄存器DPTR或PC 变址寄存器aA 该寻址方式常用于访问程序存储器,查表。 如MOCA,aA+DPTR 片机原理与运用
5、变址寻址 操作数地址= 变地址 + 基地址 基地址寄存器 DPTR 或 PC 变址寄存器 @A 该寻址方式常用于访问程序存储器,查表。 如 MOVC A,@A + DPTR
6、相对寻址 把指令中给定的地址偏移量与本指令所在单元地址(PC内容) 相加得到真正有效的操作数所存放的地址。 例如“李同学20岁,张同学比李同学大3岁,问张同学多少岁?” 这就是一个相对寻年龄的问题,而相对寻址与此类似 如JC60H;设(PC)=2000H为基址,相对偏移量为60H ;则当C=1时,转移的目的地址=2000H+2+60H 片机原理与运用
6、相对寻址 把指令中给定的地址偏移量与本指令所在单元地址(PC内容) 相加得到真正有效的操作数所存放的地址。 例如 “李同学20岁,张同学比李同学大3岁,问张同学多少岁?” 这就是一个相对寻年龄的问题,而相对寻址与此类似。 如 JC 60H ;设(PC)= 2000H为基址,相对偏移量为60H; ; 则当C = 1时,转移的目的地址= 2000H + 2 + 60H