第三章MCS51指令系统 若(DPTR)=2030H,(A)=50H SFR ROM A 50H 10093H DPH 20H 2030H+50H=2080H 2080H下56H DPL 30H 图3-5指令 MOVC A@A+DPTR的操作示意图
第三章 MCS-51 指令系统 1 11 图3-5 指令MOVC A,@A+DPTR的操作示意图 2030H+50H=2080H SFR 50H 20H 30H DPH DPL ROM 1000H 93H 2080H 56H … … … … … A 若(DPTR)=2030H,(A)=50H
第三章MCS51指令系统 (1)变址寻址方式只能对程序存储器进行寻址,或者说它是 专门针对程序存储器的寻址方式 (2)变址寻址的指令只有三条 MOVC A,@A+DPTR MOVC A,@A+PC JMP @A+DPTR 其中前两条是程序存储器读指令,后一条是无条件转移指 (3)尽管变址寻址方式操作较为复杂,但变址寻址指令都是 字节指令。 12
第三章 MCS-51 指令系统 1 12 (1) 变址寻址方式只能对程序存储器进行寻址,或者说它是 专门针对程序存储器的寻址方式。 (2) 变址寻址的指令只有三条 MOVC A,@A+DPTR MOVC A,@A+PC JMP @A+DPTR 其中前两条是程序存储器读指令,后一条是无条件转移指 令。 (3) 尽管变址寻址方式操作较为复杂,但变址寻址指令都是 一字节指令
第三章MCS51指令系统 326相对寻址 以当前程序计数器PC的当前值(指读出该条跳转指令后,PC 所指的下条指令的地址)为基值,加上指令给出的相对偏移量 rel,形成新PC值,即跳转目标地址的寻址方式称为相对寻址 该寻址方式主要用于通过修改PC值而实现程序的分支转移。 例如: ORG 2000H Jz rel ;双字节指令 rel为一字节补码数,范围为-128~127
第三章 MCS-51 指令系统 1 13 3.2.6 相对寻址 以当前程序计数器PC的当前值(指读出该条跳转指令后,PC 所指的下条指令的地址)为基值,加上指令给出的相对偏移量 rel,形成新PC值,即跳转目标地址的寻址方式称为相对寻址。 该寻址方式主要用于通过修改PC值而实现程序的分支转移。 例如: ORG 2000H JZ rel ;双字节指令 rel为一字节补码数,范围为-128~127
第三章MCS51指令系统 JZ指令表示: 若(A)≠0,则程序顺序执行,即不跳转,PC=PC+2; 若(A)=0,则以PC的当前值为基地址,加上偏移量re1后所得 到的结果为该跳转指令的目标地址。 假设re=30H,则该指令目标代码为60H,30H,分别存放于 ROM2000H和2001H单元,PC的当前值=2000H+2=2002H 若目前(A)=0,则程序跳转, 跳转的目标地址=PC的当前值+rel=2002H+30H=2032H
第三章 MCS-51 指令系统 1 14 JZ指令表示: 若(A)≠0,则程序顺序执行,即不跳转,PC=PC+2; 若(A)=0,则以PC的当前值为基地址,加上偏移量rel后所得 到的结果为该跳转指令的目标地址。 假设rel=30H,则该指令目标代码为60H,30H,分别存放于 ROM 2000H和2001H单元,PC的当前值=2000H+2=2002H。 若目前(A)=0,则程序跳转, 跳转的目标地址=PC的当前值+rel=2002H+30H=2032H
第三章MCS51指令系统 条件:(A)=0 地址ROM 2000H60H JC rel rel= 30H 2001H30H PC当前值 2002H XⅩ PC=2002H 目标地址 2032H XX (新PC值) ALU 图3-6变址寻址操作示意图
第三章 MCS-51 指令系统 1 15 图3-6 变址寻址操作示意图 ROM 60H 30H xx xx 地址 2000H 2001H 2002H 2032H … … … … … 条件:(A)=0 ALU PC当前值 目标地址 (新PC值) JC rel rel=30H PC=2002H …