3.2.2直接寻址 Direct Address ing 直接使用数所在单元的地址找到了操作数,所以称 这种方法为直接寻址。 操作数在SFR、内部RAM、位地址空间。 如:MoVA,0OH MOV C 60H MOV A OFOH 021/1/2
2021/1/21 6 3.2.2 直接寻址 Direct Addressing 直接使用数所在单元的地址找到了操作数,所以称 这种方法为直接寻址。 操作数在SFR、内部RAM、位地址空间。 如: MOV A,00H MOV C,60H MOV A,0F0H
323寄存器寻址 Register Addressing 对遄定的工作寄存器R0~R7、累加器A、通用寄存器B、 地址寄存器DPTR中的数进行操作。 例:MoA,RO;将RO工作寄存器中的数据送到累加器A中去。 提一个问题:我们知道,工作寄存器就是内存单元 的一部分,如果我们选择工作寄存器组0,则R0就 是RAM的0OH单元,那么这样一来,MoVA,00H 和MVA,R不就没什么区别了吗? 2021/1/2
2021/1/21 7 3.2.3 寄存器寻址 Register Addressing 对选定的工作寄存器R0~R7、累加器A、通用寄存器B、 地址寄存器DPTR中的数进行操作。 例:MOV A,R0;将R0工作寄存器中的数据送到累加器A中去。 提一个问题:我们知道,工作寄存器就是内存单元 的一部分,如果我们选择工作寄存器组0,则R0就 是RAM的00H单元,那么这样一来,MOV A,00H 和 MOV A,R0不就没什么区别了吗?
的确,这两条指令执行的结果是完全相同的, 都是将0OH单元中的内容送到A中去,但是执行的过 程不同,执行第一条指令需要2个机器周期,而第二 条则只需要1个机器周期,第一条指令变成最终的目 标码要两个字节(E5H00H),而第二条则只要一个 字节(E8H)就可以了 2021/1/2
2021/1/21 8 的确,这两条指令执行的结果是完全相同的, 都是将00H单元中的内容送到A中去,但是执行的过 程不同,执行第一条指令需要2个机器周期,而第二 条则只需要1个机器周期,第一条指令变成最终的目 标码要两个字节(E5H 00H),而第二条则只要一个 字节(E8H)就可以了
3.24寄存器间接寻址 Register Indirect Addressing 把地址放在另外一个寄存器中,根据这个寄存器中的数值 决定该到哪个单元中取数据。 RO,R1一-8位地址,片内低128字节或片外 DPTR---16位,片外64KB 操作数在 MCS-51 片内RAM中 如:MoVA,@R0 MOVX A @RO 操作数在 片外RAM中 MOVX A, QDPTR 操作数在 片外RAM中 021/1/2
2021/1/21 9 3.2.4 寄存器间接寻址 Register Indirect Addressing 把地址放在另外一个寄存器中,根据这个寄存器中的数值 决定该到哪个单元中取数据。 ▪R0,R1----8位地址,片内低128字节或片外 ▪DPTR----16位,片外64KB ❖ MCS-51 如: MOV A,@R0 MOVX A,@R0 MOVX A,@DPTR 操作数在 片内RAM中 操作数在 片外RAM中 操作数在 片外RAM中
325变址寻址(基址+变址) Base-Register-plus-Index-Register-Indirect Addressing 以DPTR或PC为基址寄存器,累加器A为变址寄存器。把两 者内容相加,结果作为操作数的地址。 常用于查表操作。 操作数在程 今MCS-51 序存储器中 MOVC A. @A+DPTR: (A+DPTR)+A M0VGA,@A+PC;PC+1→PG,(A+PC)→A 021/1/2
2021/1/21 10 以DPTR或PC为基址寄存器,累加器A为变址寄存器。把两 者内容相加,结果作为操作数的地址。 常用于查表操作。 ❖ MCS-51 MOVC A, @A+DPTR ;(A+DPTR) →A MOVC A, @A+PC ; PC+1 →PC,(A+PC)→A 3.2.5 变址寻址(基址+变址) Base-Register-plus-Index-Register-Indirect Addressing 操作数在程 序存储器中