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

[复制链接]
查看11 | 回复2 | 2020-6-2 09:15:51 | 显示全部楼层 |阅读模式
简单的举个例子你看一下吧!比如说MOV A,30H就是直接寻址他相当与MOV A,P1他们是直接将寄存器得内容送入累加器,而不经过寄存器,(R0,R1,R2,R3,R4,R5,R6,R7,)比如说MOVA,R0这就是寄存器寻址,而MOV P0,A是直接将累加器的内容通过P0口送出。
回复

使用道具 举报

千问 | 2020-6-2 09:15:51 | 显示全部楼层
第一个址加变址寻址movcx,[table+6]第二个寄存器间接寻址操作数在存储器中,操作数的有效地址在si,di,bx,bp这4个寄存器之一中。在不采用段前缀的情况下,对于di,si,bx默认段为ds,而bp为ss。movcx,[bx]第三个寄存器相对寻址操作数在存储器中,操作数的有效地址是一个基址寄存器(bx,bp)或变址寄存器(si,di)的内容加上8位或16位的位移之和。在指令中的8位和16位的常量采用补码表示,8位要被带符号扩展为16位movcx,[bx+6];太久没碰汇编了希望对你能有所帮助
回复

使用道具 举报

千问 | 2020-6-2 09:15:51 | 显示全部楼层
累加器写成A或ACC在51汇编语言指令中是有区别的。ACC在汇编后的机器码必有一个字节的操作数,即累加器的字节地址E0H,A在汇编后则隐含在指令操作码中。所以在指令中A不能用ACC来替代,而对A的特殊功能寄存器直接寻址和累加器某一位的寻址要用ACC,而不能写成A。A和ACC都表示累加器,但A是累加器的代号,在指令中默认是无地址的,而ACC是累加器在指令中的直接地址(E0H),可出现在用直接寻址的任何地方。一般的说法:A表示了累加器中的内容【寄存器寻址】;ACC表示了累加器的地址【直接寻址】。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行