寄存器的功能是存储二进制代码,它是由具有存储功能的触发器组合起来构成的。一个触发器可以存储1位二进制代码,故存放n位二进制代码的寄存器,需用n个触发器来构成。下面小编给大家介绍一下“寄存器寻址和寄存器间接寻址的区别”
一、寄存器寻址和寄存器间接寻址的区别
1、主体不同
寄存器寻址:是指操作数在寄存器中,由指令操作码中的rrr三位的值和PSW中RS1及RS0的状态,选中某个工作寄存器区的某个寄存器,然后进行相应的指令操作。
寄存器间接寻址:将指定的寄存器内容为地址,由该地址所指定的单元内容作为操作数。
2、功能不同
寄存器寻址:指令所要的操作数已存储在某寄存器中,或把目标操作数存入寄存器。
寄存器间接寻址:寄存器内存放的是操作数的地址,而不是操作数本身,即操作数是通过寄存器间接得到的。
3、特点不同
寄存器寻址:在指令执行过程中,会减少读/写存储器单元的次数,所以,使用寄存器寻址方式的指令具有较快的执行速度。
寄存器间接寻址:需要以寄存器符号的形式来表示,且在寄存器名称前面加上间接寻址符号“@”。例如指令MOV A,@R0就使用了寄存器间接寻址方式。
(图片来源于互联网)
4、寄存器内容不同
当操作数地址在寄存器中,应该采用寄存器间接寻址;当操作数在寄存器中,应该采用寄存器寻址。
1)寄存器的内容就是操作数。
例如:AX里放1,BX里放2,ADD AX,BX结果为AX=3。寄存器间接寻址,指令中指明存放操作数偏移地址的寄存器。即操作数放在内存空间的某个地方,这个地方的地址由段地址和寄存器所指出的偏移量进行计算得出。
段地址按照一定的约定给出。若指令中指出的是BX,SI或DI寄存器(未定义附加... 全部 寄存器(直接)寻址:指令中指出暂存操作数的寄存器。
2)寄存器的内容就是操作数。
例如:AX里放1,BX里放2,ADD AX,BX结果为AX=3。寄存器间接寻址,指令中指明存放操作数偏移地址的寄存器。即操作数放在内存空间的某个地方,这个地方的地址由段地址和寄存器所指出的偏移量进行计算得出。段地址按照一定的约定给出。来自:电工技术之家
若指令中指出的是BX,SI或DI寄存器(未定义附加段)时,说明操作数在数据段中,先用DS的值与寄存器的内容合成物理地址;若指令中指出BP,说明操作数在堆栈段,选用SS的值与寄存器的内容合成物理地址;
若定义了附加段,且指令中指出了DI寄存器,那么选用ES与DI合成物理地址;若在指令中有超越段前缀,则选用指令中指出的段寄存器值与寄存器的内容合成物理地址。如:MOV AX,[BX]操作数[BX]为寄存器间接寻址方式。
(图片来源于互联网)
评论 (0)