寄存器的直接寻址和间接寻址的区别?
寄存器直接寻址和间接寻址区别:
一、存放操作数的地址不同
寄存器直接寻址指令直接包含有操作数的有效地址(偏移地址),即直接给出操作数地址。而寄存器间接寻址指令以寄存器中的内容为地址,该地址的内容为操作数,即寄存器间接寻址方式中,寄存器内存放的是操作数的地址,而不是操作数本身。
二、寄存器对象不同
寄存器直接寻址对象为内部数据寄存器和特殊功能寄存器SFR。而寄存器间接寻址对象为R0、R1、DPTR,用前面加@表示,如@R0、@R1、@DPTR。
扩展资料:
直接寻址方式:
在指令格式的地址字段中直接指出操作数在内存的地址ID 。在通常情况下,操作数存放在数据段中,所以,其物理地址将由数据段寄存器DS和指令中给出的有效地址直接形成,但如果使用段超越前缀,那么,操作数可存放在其它段。
直接寻址方式常用于处理内存单元的数据,其操作数是内存变量的值。指令中直接给出操作数地址的寻址方式称为直接寻址。
寻址对象为:
1、内部数据存储器,在指令中以直接地址表示;
2、特殊功能寄存器SFR,在指令中用寄存器名称表示。
寄存器间接寻址方式:
以寄存器中的内容为地址,该地址的内容为操作数的寻址方式称为寄存器间接寻址。能够进行寄存器间接寻址的寄存器有:R0、R1、DPTR,用前面加@表示,如@R0、@R1、@DPTR。
寄存器间接寻址的存储空间包括内部数据存储器和外部数据存储器。由于内部数据存储器共有128字节,因此用一字节的R0和R1可间接寻址整个空间。
而外部数据存储器最大可达64K,仅R0或R1无法寻址整个空间,为此需要由P2端口提供外部RAM高8位地址,由R0或R1提供低8位地址,由此共同寻址64K字节范围。也可用16位的DPTR寄存器间接寻址64K字节存储空间。
参考资料来源:寄存器直接寻址-百度百科