单片机C51汇编指令之寻址方式学习心得

2020-03-20来源: eefocus关键字:单片机  C51  汇编指令  寻址方式

1.寄存器寻址


指令举例:MOV A,R0


该指令功能:将寄存器R0中的内容送累加器A中


详细说明:假设R0中的内容是16进制数20H,那么执行这条指令之后,累加器A中的内容是20H 即十进制数:32


2.直接寻址


指令举例:MOV A,30H


该指令功能:将地址单元30H中的内容送累加器A中


详细说明:假设地址单元30H中的内容是20H,那么执行该指令之后,累加器A中的内容是:20H 即十进制数32


3.寄存器间接寻址


指令举例:MOV A,@R0


该指令功能:将R0指向的内存单元中的内容送累加器A中


详细说明:为和寄存器直接寻址区别,汇编语言中,寄存器间接寻址中的寄存器前面会加上一个@以示区别,假设R0中的内容是10H,(10H)=20H,那么执行完该指令之后,累加器A中的内容是20H,即有A=@R0=(10H)=20H,这有点类似于高级语言中的指针,@R0指向内存地址单元10H,而10H中的内容是20H,该指令的功能就是将@R0所指向的内存地址单元10H中的内容送累加器A中。


4.立即数寻址


指令举例:MOV A,#30H


该指令功能:将立即数30H送累加器A


详细说明:为和直接寻址区别开来,汇编语言中利用#区别常数和内存地址,我们知道,寄存器直接寻址中,后面一个操作数中存储的是内存单元地址,而在立即数寻址中,后一个操作数是一个常数,所以该指令的功能最直接,相当于高级语言中的赋值操作,即将常数30H送累加器A,完成该指令之后,累加器A中的内容是:30H


注意:立即数寻址中有一条特殊的指令MOV DPTR,#立即数,这里的立即数是16位的,即该立即数可以有有16个二级制位


5.变址寻址


指令举例:MOVC A,@A+DPTR


该指令功能:将累加器A中的内容和DPTR的值(DPTR中的是内存地址)相加得到一个内存地址,将该内存地址中的内容送累加器A中


详细说明:假设该指令执行之前:A=54H,DPTR=3F21H,那么@A+DPTR=(3F75H),假设内存地址3F75中的内容是20H,那么执行完该指令之后,A中的值为20H


注意:这里的操作码是MOVC而不是MOV,且变址寻址的指令只有三条:


MOVC A,@A+DPTR


MOVC A,@A+PC


JMP @A+DPTR


并且该指令只用于程序存储器,即ROM


暂时只介绍这几种基本的寻址方式,后面应该会继续更新。


如有错误,望大家指出。

关键字:单片机  C51  汇编指令  寻址方式 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic492288.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:KEIL C中实现直接寻址和间接寻址
下一篇:多模式51单片机心形流水灯+呼吸灯+蜂鸣器音乐

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved