8051汇编寻址模式

本文介绍了几种微处理器中的寻址方式,包括立即数寻址,将数据直接存储在指令中;寄存器寻址,使用通用寄存器或特定寄存器如A、B、DPTR等;直接寻址,指定内存地址进行操作;寄存器间接寻址,通过寄存器地址获取数据;以及基址+变址间接寻址,结合DPTR或PC与A寄存器计算地址访问程序存储区。
摘要由CSDN通过智能技术生成

立即数寻址

立即数寻址:操作数以指令字节的方式直接存储在程序存储器中,指令格式#立即数,如上图指令格式 MOV Rn, #data 就是将数字data放入通用寄存器中。(注:曾经有个疑问为什么很多通用寄存器都是8个R0-R7?在指令的格式上也能发现在设计指令的时候留了3位可变位 r r r,直接可以指代R0-R7,只是不知道是先有指令集还是先有通用寄存器这个概念了)

寄存器寻址

寄存器寻址:操作数放在选定的寄存器中,如通用寄存器R0-R7,还有一些SFR内核寄存器如A(ACC)、B(B寄存器)、DPTR(DPH<<8+DPL),指令格式寄存器名称,如上图指令格式 MOV A,Rn 就是将通用寄存器Rn里面的值放到累加器ACC寄存器中。

直接寻址

直接寻址:在指令中给定了操作数的实际地址,8051的直接寻址一般都是IRAM中的地址,指令格式地址,如上图指令格式 MOV direct,A 就是将累加器ACC寄存器中的值放到direct所对应的IRAM地址单元中;MOV 0x20, A 就是将寄存器A的值放到IRAM 0x20这个地址单元中去。用C语言的概念理解direct就是一个指针。

寄存器间接寻址

寄存器间接寻址: 操作数的地址放在选定的寄存器中。将寄存器里的数据当作地址,这个地址里面的数才是真正的操作数,指令格式@寄存器名称。如上图指令格式 MOV A,@Ri 就是将Ri寄存器中的值当地址,这个地址所指向的值放到累加器ACC中去。用C语言的概念理解Ri就是一个二级指针。

基址+变址间接寻址

基址+变址间接寻址: 以DPTR或PC作基址寄存器,A作变址寄存器,相加形成16位的地址来访问程序存储区。基址+变址间接寻址在51指令集中只能用来访问程序存储区,指令格式@A+DPTR/PC。如上图指令格式 MOVC A,@A+DPTR 就是将A寄存器里的值加上DPTR寄存器里的值当地址来访问程序存储区,将里面的值再赋给A寄存器。用C语言的概念理解就是A+DPTR的值就是一个指针。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值