7种寻址方式 高手帮忙教下单片机的问题 谢谢

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-07-07
为什么要用二进制 mcs-51单片机采用了7种寻址方式

这是为了在效率和方便性上找一个平衡。立即数寻址和寄存器寻址在效率上是最快的,但寄存器仅有几个非常宝贵不可能将操作数都存入其中等待使用,立即数的使用场合也非常有限,这样就需要将数据保存在内存中,然后使用直接寻址、寄存器间接寻址、寄存器相对寻址、基址加变址寻址、相对基址加变址寻址这些寻址方式将内存中的数据移入寄存器中。


1. MOV Ro,#70H 指令形式是MOV Ri,#date(i=0,1)
结果:(Ro =70H)
RO和Ri有什么关系吗?为什么是Ro =70H?
答:是R0非Ro,MOV R0,#70H是把70H这个十六进制数存进R0这个寄存器,所以R0=70H,H是表示这个数是十六进制
RO和Ri有什么关系吗?: Ri(i=0,1)->R0和R1这是单片机里的两个寄存器

2.MOV A,@Ri
结果:(A=60H)?为什么呢?不应该等于70H嚒?
答:应该是MOV A,@R0,由1得R0中存的值是70H,而这个指令是把R0中的值70H作为地址,把这地址中存放的值存到A中,由:(70H)=60H这个指令可知以70H为地址的存储单元中存放的是60H。所以A=60H。

3. MOV R1 ,A
这个指令是把寄存器A的值存到寄存器R1中,之前A=60H,所以R1=60H

4.MOV B,@ R1
这个B也是寄存器 而这个指令是把R1中的值60H作为地址,把这地址中存放的值存到B中,由:(60H)=20H这个指令,可知以60H为地址的存储单元中存放的是20H。所以B=20H。

5.MOV@ R0,P1
这里P1也是寄存器,这个指令的意思是把R0中的值即70H作为地址,然后把P1的值存到以70H为地址的存储单元中,从而得到(70H)=B7H。
137是什么?规定的么,应该是写错了。B7H转化为十进制数也为=11*16+7=183

6.MOV 60H#60H
应该是MOV 60H,#60H就是把60H(后一个)这个值存储到以60H(前面的那个)为地址的存储单元中。

形式:MOV direct,#date
结果:(60H)=60H
date是什么??
不是date而是data(单片机中成为立即数)