3.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执行示意图程序存储区741001013A3AACC操作码立即数5.基址寄存器加变址寄存器间址寻址方式本寻址方式是以DPTR或PC作基址寄存器,以累加器A作为变址寄存器。说明:(1)本寻址方式是专门针对程序存储器的寻址方式,寻址范围可达到64KB。(2)本寻址方式的指令只有3条:MOVCA,@A+DPTRMOVCA,@A+PCJMP@A+DPTR例现假设MOVCA,@A+DPTR指令存放在70H单元,ACC中原存放值为E0H,DPTR中值为2000H,则A+DPTR形成的地址为20E0H。20E0H单元中内容为47H,则执行该指令后,ACC中原E0H被47H代替。该指令执行过程示于图。MOVCA,@A+DPTR执行示意图7093程序存储区(47)E02000DPHDPLALU…4720E0…ACC6.位寻址方式MCS-51有位处理功能,可以对数据位进行操作,例如:MOVC,40H是把位40H的值送到进位位C。寻址范围包括:(1)内部RAM中的位寻址区。位有两种表示方法,例如,40H;另一种是单元地址加上位,例如,(28H).0,指的是28H单元中的最低位。它们是等价的。(2)特殊功能寄存器中的可寻址位可寻址位在指令中有如下4种的表示方法:a.直接使用位地址。例如PSW.5的位地址为0D5H。b.位名称的表示方法。例如:PSW.5是F0标志位,可使用F0表示该位。c.单元地址加位数的表示方法。例如:(0D0H).5。d.特殊功能寄存器符号加位数的表示方法。例如:PSW.5。例SETB3DH;将片内RAM位地址3DH即27H单元的第5位置“1”。7.相对寻址方式在相对寻址的转移指令中,给出了地址偏移量,以“rel”表示,即把PC的当前值加上偏移量就构成了程序转移的目的地址:目的地址=转移指令所在的地址+转移指令的字节数+rel偏移量rel是一带符号的8位二进制数补码数。范围是:–128~+127向地址增加方向最大可转移(127+转移指令字节)个单元地址,向地址减少方向最大可转移(128-转移指令字节)个单元地址。7种寻址方式及寻址空间,见表3-1(P43)。例JC03H;若进位C=0,则程序顺序执行,即不跳转,PC=PC+2;若进位C=1,则以PC中的当前内容为基地址,加上偏移量03H后所得到的结果为该转移指令的目的地址。程序存储区401000031001C21005ALU1002PC……指令指令寄存器寄存器译码译码地址地址译码译码程序计数器程序计数器地址寄存器地址寄存器累加器累加器AA运算器运算器①②①②存存储储器器内内部部数数据据总总线线内内部部数数据据总总线线外部地址总线外部地址总线ABAB外部地址总线外部地址总线ABAB数据缓冲器数据缓冲器外部数据总线外部数据总线DBDB外部数据总线外部数据总线DBDB寄存器区寄存器区外部控制总线外部控制总线CBCB外部控制...