5个回答
展开全部
一、主体不同
1、寄存器寻址:是指操作数在寄存器中,由指令操作码中的rrr三位的值和PSW中RS1及RS0的状态,选中某个工作寄存器区的某个寄存器,然后进行相应的指令操作。
2、寄存器间接寻址:将指定的寄存器内容为地址,由该地址所指定的单元内容作为操作数。
二、功能不同
1、寄存器寻址:指令所要的操作数已存储在某寄存器中,或把目标操作数存入寄存器。
2、寄存器间接寻址:寄存器内存放的是操作数的地址,而不是操作数本身,即操作数是通过寄存器间接得到的。
三、特点不同
1、寄存器寻址:在指令执行过程中,会减少读/写存储器单元的次数,所以,使用寄存器寻址方式的指令具有较快的执行速度。
2、寄存器间接寻址:需要以寄存器符号的形式来表示,且在寄存器名称前面加上间接寻址符号“@”。例如指令MOV A,@R0就使用了寄存器间接寻址方式。
参考资料来源:百度百科-寄存器寻址
参考资料来源:百度百科-寄存器间接寻址
上海巴鲁图工程机械科技有限公司_
2023-06-12 广告
2023-06-12 广告
一、方式不同1、直接寻址:在指令格式的地址的字段中直接指出操作数在内存的地址。2、间接寻址:指令地址字段的形式地址D不是操作数的真正地址,而是操作数地址的指示器,或者说是D单元的内容才是操作数的有效地址。二、特点不同1、直接寻址:操作数的地...
点击进入详情页
本回答由上海巴鲁图工程机械科技有限公司_提供
展开全部
寄存器(直接)寻址:指令中指出暂存操作数的寄存器。寄存器的内容就是操作数。如: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
简单地说,直接寻址,操作数在寄存器中;间接寻址,操作数在某存储单元中,该存储单元地址由段地址寄存器和偏移地址寄存器决定。
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
简单地说,直接寻址,操作数在寄存器中;间接寻址,操作数在某存储单元中,该存储单元地址由段地址寄存器和偏移地址寄存器决定。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
简单的举个例子你看一下吧!比如说MOV A,30H就是直接寻址他相当与MOV A,P1
他们是直接将寄存器得内容送入累加器,而不经过寄存器,(R0,R1,R2,R3,R4,R5,R6,R7,)比如说MOV A,R0这就是寄存器寻址,而MOV P0,A
是直接将累加器的内容通过P0口送出。
他们是直接将寄存器得内容送入累加器,而不经过寄存器,(R0,R1,R2,R3,R4,R5,R6,R7,)比如说MOV A,R0这就是寄存器寻址,而MOV P0,A
是直接将累加器的内容通过P0口送出。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
当操作数地址在寄存器中,应该采用寄存器间接寻址;
当操作数在寄存器中,应该采用寄存器寻址。
当操作数在寄存器中,应该采用寄存器寻址。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
累加器写成A或ACC在51汇编语言指令中是有区别的。
ACC在汇编后的机器码必有一个字节的操作数,即累加器的字节地址E0H,A在汇编后则隐含在指令操作码中。所以在指令中A不能用ACC来替代,而对A的特殊功能寄存器直接寻址和累加器某一位的寻址要用ACC,而不能写成A。
A和ACC都表示累加器,但A是累加器的代号,在指令中默认是无地址的,而ACC是累加器在指令中的直接地址(E0H),可出现在用直接寻址的任何地方。
一般的说法:A表示了累加器中的内容【寄存器寻址】;ACC表示了累加器的地址【直接寻址】。
ACC在汇编后的机器码必有一个字节的操作数,即累加器的字节地址E0H,A在汇编后则隐含在指令操作码中。所以在指令中A不能用ACC来替代,而对A的特殊功能寄存器直接寻址和累加器某一位的寻址要用ACC,而不能写成A。
A和ACC都表示累加器,但A是累加器的代号,在指令中默认是无地址的,而ACC是累加器在指令中的直接地址(E0H),可出现在用直接寻址的任何地方。
一般的说法:A表示了累加器中的内容【寄存器寻址】;ACC表示了累加器的地址【直接寻址】。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询