寄存器直接寻址和间接寻址的区别???
一、方式不同
1、直接寻址:在指令格式的地址的字段中直接指出操作数在内存的地址。
2、间接寻址:指令地址字段的形式地址D不是操作数的真正地址,而是操作数地址的指示器,或者说是D单元的内容才是操作数的有效地址。
二、特点不同
1、直接寻址:操作数的地址直接给出而不需要经过某种变换,在指令中直接给出参与运算的操作数及运算结果所存放的主存地址,即在指令中直接给出有效地址。
2、间接寻址:需要以寄存器符号的形式来表示,且在寄存器名称前面加上间接寻址符号“@”。
三、原理不同
1、直接寻址:操作数存放在数据段中,所以,其物理地址将由数据段寄存器DS和指令中给出的有效地址直接形成,但如果使用段超越前缀,那么,操作数可存放在其它段。
2、间接寻址:在直接寻址的基础上面建立起来的,也就是直接寻址得到的数据是一个地址,通过这个地址找到最终的数据,也就是两次寻址,第一次得到的是地址,第二次才是目标数据。
参考资料来源:百度百科-间接寻址
参考资料来源:百度百科-直接寻址
2024-07-26 广告
寄存器直接寻址和间接寻址区别:
一、存放操作数的地址不同
寄存器直接寻址指令直接包含有操作数的有效地址(偏移地址),即直接给出操作数地址。而寄存器间接寻址指令以寄存器中的内容为地址,该地址的内容为操作数,即寄存器间接寻址方式中,寄存器内存放的是操作数的地址,而不是操作数本身。
二、寄存器对象不同
寄存器直接寻址对象为内部数据寄存器和特殊功能寄存器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字节存储空间。
参考资料来源:寄存器直接寻址-百度百科
操作数在CPU内部的寄存器中,指令指定寄存器号。对于16位操作数,寄存器可以是:AX、BX、CX、DX、SI、DI、SP和BP等。对于8位操作数,寄存器可以是AL、AH、BL、BH、CL、CH、DL、DH。这种寻址方式由于操作数就在寄存器中,不需要访问存储器来取得操作数。因而可以取得较高的运算数度。
直接寻址方式:
操作数在寄存器中,指令直接包含有操作数的有效地址(偏移地址)。注:操作数一般存放在数据段。所以操作数的地址由DS加上指令中直接给出的16位偏移得到。如果采用段超越前缀,则操作数也可含在数据段外的其他段中。