3指令系统的寻址方式寻址方式就是在指令中说明操作数所在地址的方法
共7种寻址方式
1.寄存器寻址方式操作数在寄存器中MOVA,Rn;(Rn)→A,n=0~7表示把寄存器Rn的内容传送给累加器A寻址范围包括:(1)4组通用工作寄存区共32个工作寄存器
(2)部分特殊功能寄存器,例如A、B以及数据指针寄存器DPTR等
程序存储区EA102012R2ACC4A片内RAM区4AMOVA,R2执行示意图2.直接寻址方式操作数直接以单元地址的形式给出:MOVA,40H寻址范围:(1)内部RAM的128个单元(2)特殊功能寄存器
除了以单元地址的形式外,还可用寄存器符号的形式给出
例如:MOVA,80H与MOVA,P0是等价的
直接寻址方式是访问特殊功能寄存器的唯一寻址方式例MOVA,3AH;把3AH单元的内容送A
MOVA,3AH执行示意图程序存储区E510片内RAM区5005013A3A10ACC3
寄存器间接寻址方式寄存器中存放的是操作数的地址在寄存器的名称前面加前缀标志“@”访问内部RAM或外部数据存储器的低256个字节时,只能采用R0或R1作为间址寄存器
例如:MOVA,@Ri;i=0或1其中Ri中的内容为40H,把内部RAM中40H单元的内容送到A
寻址范围:(1)访问内部RAM低128个单元,其通用形式为@Ri(2)对片外数据存储器的64K字节的间接寻址,例如:MOVXA,@DPTR(3)片外数据存储器的低256字节例如:MOVXA,@Ri(4)堆栈区堆栈操作指令PUSH(压栈)和POP(出栈)使用堆栈指针(SP)作间址寄存器例MOVR0,#50HMOVA,@R0MOVA,@R0执行示意图4.立即寻址方式操作数在指令中直接给出,需在操作数前面加前缀标志“#”
例如:MOVA,#3AH;立即数3AH送累加器AMOVA,#3AH执行示意图程序存储区741001013A3AA