寄存器寻址和寄存器间接寻址的区别

比如当操作数地址在寄存器中 应该采用什么寻址方式

一、主体不同

1、寄存器寻址:是指操作数在寄存器中,由指令操作码中的rrr三位的值和PSW中RS1及RS0的状态,选中某个工作寄存器区的某个寄存器,然后进行相应的指令操作。

2、寄存器间接寻址:将指定的寄存器内容为地址,由该地址所指定的单元内容作为操作数。

二、功能不同

1、寄存器寻址:指令所要的操作数已存储在某寄存器中,或把目标操作数存入寄存器。

2、寄存器间接寻址:寄存器内存放的是操作数的地址,而不是操作数本身,即操作数是通过寄存器间接得到的。


三、特点不同

1、寄存器寻址:在指令执行过程中,会减少读/写存储器单元的次数,所以,使用寄存器寻址方式的指令具有较快的执行速度。

2、寄存器间接寻址:需要以寄存器符号的形式来表示,且在寄存器名称前面加上间接寻址符号“@”。例如指令MOV A,@R0就使用了寄存器间接寻址方式。


参考资料来源:百度百科-寄存器寻址

参考资料来源:百度百科-寄存器间接寻址

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-04-13
寄存器(直接)寻址:指令中指出暂存操作数的寄存器。寄存器的内容就是操作数。如:ax里放1,bx里放2,add
ax,bx结果为ax=3。
寄存器间接寻址,指令中指明存放操作数偏移地址的寄存器。即操作数放在内存空间的某个地方,这个地方的地址由段地址和寄存器所指出的偏移量进行计算得出。段地址按照一定的约定给出。若指令中指出的是bx,si或di寄存器(未定义附加段)时,说明操作数在数据段中,先用ds的值与寄存器的内容合成物理地址;若指令中指出bp,说明操作数在堆栈段,选用ss的值与寄存器的内容合成物理地址;若定义了附加段,且指令中指出了di寄存器,那么选用es与di合成物理地址;若在指令中有超越段前缀,则选用指令中指出的段寄存器值与寄存器的内容合成物理地址。
如:mov
ax,[bx]
操作数[bx]为寄存器间接寻址方式。
若ds=4000h,bx=100h,存储单元(40100h)=3256h
物理地址=16*ds+bx=40000h+100h=40100h
执行后ax=3256h
简单地说,直接寻址,操作数在寄存器中;间接寻址,操作数在某存储单元中,该存储单元地址由段地址寄存器和偏移地址寄存器决定。
第2个回答  2009-08-03
简单的举个例子你看一下吧!比如说MOV A,30H就是直接寻址他相当与MOV A,P1
他们是直接将寄存器得内容送入累加器,而不经过寄存器,(R0,R1,R2,R3,R4,R5,R6,R7,)比如说MOV A,R0这就是寄存器寻址,而MOV P0,A
是直接将累加器的内容通过P0口送出。
第3个回答  推荐于2017-11-23
当操作数地址在寄存器中,应该采用寄存器间接寻址;
当操作数在寄存器中,应该采用寄存器寻址。本回答被提问者采纳
第4个回答  2018-12-24
累加器写成A或ACC在51汇编语言指令中是有区别的。

ACC在汇编后的机器码必有一个字节的操作数,即累加器的字节地址E0H,A在汇编后则隐含在指令操作码中。所以在指令中A不能用ACC来替代,而对A的特殊功能寄存器直接寻址和累加器某一位的寻址要用ACC,而不能写成A。

A和ACC都表示累加器,但A是累加器的代号,在指令中默认是无地址的,而ACC是累加器在指令中的直接地址(E0H),可出现在用直接寻址的任何地方。

一般的说法:A表示了累加器中的内容【寄存器寻址】;ACC表示了累加器的地址【直接寻址】。

寄存器寻址和寄存器间接寻址的区别
一、主体不同 1、寄存器寻址:是指操作数在寄存器中,由指令操作码中的rrr三位的值和PSW中RS1及RS0的状态,选中某个工作寄存器区的某个寄存器,然后进行相应的指令操作。2、寄存器间接寻址:将指定的寄存器内容为地址,由该地址所指定的单元内容作为操作数。二、功能不同 1、寄存器寻址:指令所要的操...

寄存器寻址和寄存器间接寻址的区别
总结来说,寄存器寻址侧重于快速访问,而寄存器间接寻址则提供了更大的灵活性。理解并熟练运用这两种寻址方式,对于优化程序性能和设计高效计算机系统至关重要。

寄存器直接寻址和间接寻址有什么区别?
寄存器直接寻址和间接寻址区别:一、存放操作数的地址不同 寄存器直接寻址指令直接包含有操作数的有效地址(偏移地址),即直接给出操作数地址。而寄存器间接寻址指令以寄存器中的内容为地址,该地址的内容为操作数,即寄存器间接寻址方式中,寄存器内存放的是操作数的地址,而不是操作数本身。二、寄存器对象不...

寄存器直接寻址和间接寻址的区别???
一、方式不同 1、直接寻址:在指令格式的地址的字段中直接指出操作数在内存的地址。2、间接寻址:指令地址字段的形式地址D不是操作数的真正地址,而是操作数地址的指示器,或者说是D单元的内容才是操作数的有效地址。二、特点不同 1、直接寻址:操作数的地址直接给出而不需要经过某种变换,在指令中直接...

间接寻址和寄存器间接寻址有什么区别?
一、作用不同 MOV A,R0是直接寻址指令(直接寻址方式的操作指令直接把地址作为操作数来运行,既可作为源操作数,也可作为目的操作数)因此是传递的R0中存储的数据。MOV A,@R0是间接寻址指令(间接寻址时,寄存器的内容是操作数的地址。通过@Ri可以对片内数据存储器单元间接寻址),因此Ri中存储的是...

寻址方式有哪几种?
不同寻址方式的寻址范围 1、直接寻址:可以通过指令中给出的地址直接访问一个固定的内存单元。2、间接寻址:可以在寄存器或内存中存储地址,从而可以间接访问内存,寻址范围等于内存的地址空间大小。3、寄存器寻址:由于操作数存储在寄存器中,因此寻址范围受限于CPU内部寄存器的数量和位宽度。4、相对寻址:...

寄存器直接寻址和间接寻址的区别???
寄存器直接寻址:从寄存器中直接寻找数据对应的地址!寄存器间接寻址:在寄存器中存储的不是目的数据的地址而是数据地址的间接地址!其实只先明白什么是直接寻址和间接寻址。只是在寻址的方式上先通过寄存器。

1.试比较间接寻址和寄存器寻址
寄存器间接寻址:1.指令中的地址码是寄存器编号 2.寄存器中存储的是真实地址(EA)间接寻址 1。指令中地址码是某一主存地址(不妨设为:A)2。A中是真实地址(EA)另外,寄存器间接寻址和间接寻址均包括多次间址 即:需要寻址多次才能找到真实地址(EA),如三次间址 (注:多次间址往往需要在寄存器或主存...

立即数寻址、寄存器寻址、直接寻址、间接寻址
直接寻址是指程序直接指定内存单元的地址,如"mov ebx, [0x00401000]",获取并赋值给ebx寄存器内存中0x00401000处的数据。最后是间接寻址,当程序需要访问的内存地址未知时,会通过运算获取,如先"mov eax, 0x00401000"存储地址,然后通过"[eax]"和"[eax + 1]"间接访问该地址及其后续内存单元。

...的地址的字段中直接指出操作数在内存的地址的寻址方式称为()。_百 ...
寄存器间接寻址:与寄存器寻址方式的区别在于:指令格式中的寄存器内容不是操作数,而是操作数的地址,该地址指明的操作数在内存中。立即寻址:指令的地址字段指出的不是操作数的地址,而是操作数本身,这种寻址方式称为立即寻址。直接寻址:直接寻址是一种基本的寻址方法,其特点是:在指令格式的地址的字段中...

相似回答