4.寄存器间接寻址 以某一个寄存器的内容作为操作数的地址。 ■工作寄存器中只有R0,R1可以作为间址寄存器; 寄存器间接寻址用符号“@”; @R0,@R1可寻址片内RAM的00H-7FH单元中的数据; 寄存器间址指令不能用于寻址特殊功能寄存器; @R0,@R1可寻址片外RAM的00H-FFH单元中的数据; @DPTR的寻址范围可覆盖片外RAM的全部64K单元
4. 寄存器间接寻址 寄存器间接寻址 以某一个寄存器的内容作为操作数的地址。 以某一个寄存器的内容作为操作数的地址。 工作寄存器中只有 工作寄存器中只有R0,R1可以作为间址寄存器; 可以作为间址寄存器; 寄存器间接寻址用符号 寄存器间接寻址用符号“@”; @R0,@R1可寻址片内RAM的00H-7FH单元中的数据; 单元中的数据; 寄存器间址指令不能用于寻址特殊功能寄存器; 寄存器间址指令不能用于寻址特殊功能寄存器; @R0,@R1可寻址片外RAM的00H-FFH单元中的数据; 单元中的数据; @DPTR的寻址范围可覆盖 的寻址范围可覆盖片外RAM的全部64K单元
MOVA,@R0;(R0)→A 30H 01 (R0)=31H 31H 02 32H 03 (R0)=(31H)(4)=02H
01 02 03 30H 31H 32H (R0)=31H R0)=31H ((R0))=(31H) R0))=(31H) (A)=02H MOV A, @R0; ((R0))→A
5.变址寻址(基址寄存器+变址寄存器间接寻址) 以某个寄存器的内容为基地址,在这个基地址的基 础上加上地址偏移量才是真正的操作数地址。 ■这种寻址方式只能用于从ROM中读数据; ·MCS-51有两个基址寄存器:DPTR,PC; ■地址偏移量是A的内容,应为8位无符号数。 MOVC A,@A+DPTR; (DPTR)+(A)→A MOVC A,@A+PC; PC)+1+(A)→A
5. 变址寻址(基址寄存器+变址寄存器间接寻址) 以某个寄存器的内容为基地址,在这个基地址的基 以某个寄存器的内容为基地址,在这个基地址的基 础上加上地址偏移量才是真正的操作数地址。 础上加上地址偏移量才是真正的操作数地址。 这种寻址方式只能用于从 这种寻址方式只能用于从ROM中读数据; MCS-51 有两个基址寄存器: 有两个基址寄存器:DPTR,PC; 地址偏移量是A的内容,应为8位无符号数。 MOVC A , @A+DPTR; ((DPTR)+(A))→A MOVC A , @A+PC; ((PC)+1+(A)) →A
MOVC A, @A+PC(机器码:83H ROM PC 10000011 3F00H PC+1 3F01H S0H(37H) A (A) PC 00110111 3F51H 当前值
PC 当前值 MOVC A MOVC A ,@A+PC (机器码: 83H)
6.相对寻址 以PC的内容作为基地址,加上指令中给定的偏移量rl形 成实际的转移地址。 7 相对地址偏移量rel,是一个带符号的8位二进制补 码,取值范围为-128+127。 MCS-51有两类相对转移指令:双字节相对转移指令和 三字节相对转移指令。 目的地址=源地址+2或3(湘对转移指令字节数)+rel 二字节的转移指令 SJMP rel; (PC)+2+rel)→PC PC:2000H 机器码:8054H 目的地址=2000H+02H+54H=2056H
6. 相对寻址 以PC的内容作为基地址, 的内容作为基地址,加上指令中给定的 加上指令中给定的偏移量rel形 成实际的转移地址。 成实际的转移地址。 相对地址偏移量 相对地址偏移量rel,是一个带符号的 是一个带符号的8位二进制补 码,取值范围为-128~+127。 MCS-51有两类相对转移指令: 有两类相对转移指令:双字节相对转移指令和 相对转移指令和 三字节相对转移指令。 相对转移指令。 目的地址=源地址+2或3(相对转移指令字节数 相对转移指令字节数)+rel 二字节的转移指令 SJMP rel; ((PC)+2 +rel)→ PC PC: 2000H 机器码: 8054H 目的地址=2000H+02H+54H=2056H