单片机的指令系统和寻址方式介绍

发布者:Huayu8888最新更新时间:2021-04-20 来源: eefocus关键字:单片机  指令系统  寻址方式 手机看文章 扫描二维码
随时随地手机看文章

1、MOVA,#20H


这条指令表示把20H这个数送入累加器A中(一个特殊功能寄存器)。


2、ADDA,70H


这条指令表示把累加器A中的内容(在上例中送入的#20H)和存贮器中地址为70H单元中的内容(也是一个数字),通过算术逻辑单元(英文缩写为ALU)相加,并将结果保留在A中。这里MOV、ADD等称为操作码,而A、#20H、70H等均称为操作数。在汇编语言程序中,操作码通常由英文单词缩写而成,这样有助于记忆,所以又称助记符。如MOV就是英文单词MOVE的缩写,含有搬移的意思;而ADD即为英文单词,其意为相加。因此,对于略懂英语的用户,掌握单片机指令的含意是较为方便的。操作数有多种表示法,如以上的#20H称为立即数,即20H就是真正的操作数。而70H是存贮器中某个单元的地址,在该单元中,放着操作数(比如说是3AH),ADDA,70H不是将70H和A中的内容相加,而是从存贮器70H单元中将3AH取出和A中的内容相加。由上可知,要找到实际操作数,有时就要转个弯,甚至转几个弯,这个过程称为寻址,MCS-51共有7种寻址方式,现介绍如下:


一、立即寻址:操作数就写在指令中,和操作码一起放在程序存贮器中。把“#”号放在立即数前面,以表示该寻址方式为立即寻址,如#20H。


二、寄存器寻址:操作数放在寄存器中,在指令中直接以寄存器的名字来表示操作数的地址。例如MOVA,R0就属于寄存器寻址,即将R0寄存器的内容送到累加器A中。


三、直接寻址:操作数放在单片机的内部RAM某单元中,在指令中直接写出该单元的地址。如前例的ADDA,70H中的70H。


四、寄存器间接寻址:操作数放在RAM某个单元中,该单元的地址又放在寄存器R0或R1中。


如果RAM的地址大于256,则该地址存放在16位寄存器DPTR(数据指针)中,此时在寄存器名前加@符号来表示这种间接寻址。如MOVA,@R0。其它还有变址寻址、相对寻址、位寻址等,待以后再详细介绍。可能有人会问,在指令中直接给出实际操作数,不是简单、明了吗?为什么还要用其它几种寻址方式呢?这是因为在编制程序时很难一下子就给出操作数。如用单片机控制温度时,时时需要将给定的控制温度(如20℃)减去环境温度,而环境温度时时有变化,显然无法在程序指令中给出,只有通过一定方式,将其送入某个输入/输出口,再存放在某个寄存器中,这就必须用到寄存器寻址。又如要进行算术运算,要计算每班学员各科成绩的平均值,如果把每个学员的各科都编一个程序,在程序中直接给出该学员各科成绩,再求平均值,显然太麻烦。这里可以编一个求平均成绩的通用程序,把每位学员的成绩送入存贮器的各个单元中,这时可采取直接寻址,一个程序可供每个学员用,不是更方便吗?所以,寻址方式越多,编制程序就越方便、灵活,适用范围就越广。寻址有如找人,如被找的人有手机、BP机、座机电话等多种联系方式则就容易找到他,单片机也是如此,寻址方式越多,找操作数越方便,单片机的功能就越强。前面介绍51系列单片机的寻址方式时,常遇到单片机内部的一些寄存器、累加器A、通用寄存器R0~R7、数据指针DPTR和存贮器等。在以后介绍指令时,数据就要在这些寄存器、存贮器之间传送,或者进行运算。因此,编制程序就需熟悉单片机的内部结构。


8051单片机的内部总体结构其基本特性如下:


8位CPU、片内振荡器


4k字节ROM、128字节RAM


21个特殊功能寄存器


32根I/O线


可寻址的64k字节外部数据、程序存贮空间


2个16位定时器、计数器


中断结构:具有二个优先级、五个中断源


一个全双口串行口


位寻址(即可寻找某位的内容)功能,适于按位进行逻辑运算的位处理器。除128字节RAM、4k字节ROM和中断、串行口及定时器模块外,还有4组I/O口P0~P3,余下的就是CPU的全部组成。把4kROM换为EPROM就是8751的结构,如去掉ROM/EPROM部分即为8031的框图,如果将ROM置换为Flash存贮器或EEPROM,或再省去某些I/O,即可得到51系列的派生品种,如89C51、AT89C2051等单片机的框图。


关键字:单片机  指令系统  寻址方式 引用地址:单片机的指令系统和寻址方式介绍

上一篇:51单片机产生串口中断的方式
下一篇:8051单片机数据说明

推荐阅读最新更新时间:2024-11-04 11:32

单片机数的本质和物理现象
单片机执行指令 我们来思考一个问题,当我们在编程器中把一条指令写进单片机内部,然后取下单片机,单片机就可以执行这条指令。 那么这条指令一定保存在单片机的某个地方,并且这个地方在单片机掉电后依然可以保持这条指令不会丢失,这是个什么地方呢? 这个地方就是单片机内部的只读存储器即ROM(READ ONLY MEMORY)。 为什么称它为只读存储器呢?刚才我们不是明明把两个数字写进去了吗?原来在89C51中的ROM是一种电可擦除的ROM,称为FLASH ROM,刚才我们是用的编程器,在特殊的条件下由外部设备对ROM进行写的操作,在单片机正常工作条件下,只能从那面读,不能把数据写进去,所以我们还是把它称为ROM。 单片机数的本质
[单片机]
51单片机的存储器扩展
在51单片机中,连接外部存储器使用的是三总线的方式,即:数据总线,地址总线,控制总线。51单片机的P0口在有外部存储器的设计之中,一般充当数据总线和低8位的地址总线。所以我们必须解决P0的复用问题。51提供了ALE信号,ALE地址锁存信号的下降沿来临时,地址总线的数据被锁存。 外扩的数据存储器和外扩的I/O口是统一编址的。必须记住。 PSEN信号是外部ROM的读选通信号。一般接到存储器的OE端。 EA信号:EA = 0,只访问外部程序存储器,EA = 1,从内部ROM开始访问,当访问完内部ROM后,转去访问外部ROM。 常用的ROM芯片: Ai:地址线 Di:数据线 CE:片选信号 OE:选通
[单片机]
51<font color='red'>单片机</font>的存储器扩展
基于51单片机的波形发生器&DA转换(dac0832)
代码如下: #include reg51.h #define uchar unsigned char sbit ksaw=P2^0; //锯齿波按键. sbit ktran=P2^1; //三角波按键. sbit ksquare=P2^2; //方波按键. sbit ksin=P2^3; //正弦波按键. uchar key1; uchar keya; uchar keyb; uchar keyc; uchar keyd;void delay( ); uchar code tab ={ 64,67,70,73,76,79,82,85,88,91,94,96,99,102,104,106, 109,111,113,115,
[单片机]
基于51<font color='red'>单片机</font>的波形发生器&DA转换(dac0832)
PIC单片机系统开机的时候一直会复位可能的原因?
可能的原因:也许,您该检查一下您的电源走线是不是够粗,或者,程序是不是一开始运行就点亮LED或者叫BUZZER?因为,PICmicro开始任务的电压通常是蛮低的。如果因为上述原因而让电压骤降,可能会让Vcc电压瞬间掉至reset电压以下,而造成重置。如果您的示波器不够好,很有可能根本观察不到此电压变动之状况。 WDT TIMEOUT 的标准时间为18mSec, 但是非常重要的一点, WDT TIMEOUT 的最小值为7~9mSec, 而且会受温度的影响 并且这个值不是测试值,而是计算值,请不要太相信. 若你有使用WDT,建议在5mSec以内Clear WDT较好 注意芯片的LVP(低压编程使能)一定要禁止,如果你确实需要它开,你确
[单片机]
IC解密之单片机算术运算指令
  单片机算术运算指令汇总,不带进位位的单片机加法指令   ADD A,#DATA ;例:ADD A,#10H   ADD A,direct ;例:ADD A,10H   ADD A,Rn ;例:ADD A,R7   ADD A,@Ri ;例:ADD A,@R0   用途:将A中的值与其后面的值相加,最终结果否是回到A中。   例:MOV A,#30H   ADD A,#10H   则执行完本条指令后,A中的值为40H。   下面的题目自行练习   MOV 34H,#10H   MOV R0,#13H   MOV A,34H   ADD A,R0   MOV R1,#34H   ADD A,@R1
[单片机]
单片机/ARM死机或跑飞的诊断疗法
有时,在写ARM时会遇到经常死机的情况,莫名其妙,在这里我总结了一些单片机/ARM死机或者跑飞的一些常见的查找方法和我对此的一些拙见希望对大家有帮助。 “死机”和“跑飞” 随着单片机在能源领域中的广泛应用,单片机的抗干扰问题越来越突出,煤矿井下环境一般比较恶劣,这便会为单片机控制系统带来各种干扰,以致系统不能正常工作。单片机应用系统的抗干扰性能主要取决于硬件的抗干扰设计,但软件抗干扰设计作为硬件抗干扰的完善和补充,作用也非常重要,因为大量的干扰通常并不能影响系统内硬件的运作,却常会使系统的软件无法正常运行,单片机应用的一个突出问题,便是单片机运行过程中经常出现的程序跑飞现象。 在单片机系统中,因为干扰的原因,在非预期的情况
[单片机]
基于单片机控制的以太网交换机设计与实现
   引 言   随着计算机性能的提高及通信量的聚增,传统局域网已经越来越超出了自身负荷,交换式以太网技术应运而生,大大提高了局域网的性能。网络交换机能显著的增加带宽,可以建立地理位置相对分散的网络。局域网交换机的每个端口可并行、安全、实时传输信息,而且性能稳定、结构灵活、易于安装、便于管理,能很好地满足企业网和电信运营商宽带接入的需求。    1 网络交换机的硬件设计   随着人们对网络应用中的安全性和高带宽的需求,网络交换机的用途越来越广。本交换机采用了AL101芯片的ROX总线,将3个8口交换芯片连接起来,组成了1个24端口交换机,满足了用户对多交换端口的需求。   1.1 电路性能要求   交换机的高速PCB电路
[测试测量]
基于<font color='red'>单片机</font>控制的以太网交换机设计与实现
JBOSN将RTOS植入Atmel的可定制MCU
爱特梅尔公司 ( Atmel® Corporation ) 和韩国 IBOSN Systems 公司宣布将 JBOSN 高性能实时操作系统 (RTOS) 植入爱特梅尔的 AT91CAP9S 可定制微控制器中。 JBOSN RTOS™ 是实时、占先式 (preemptive) 多任务处理内核,专为时间关键性嵌入式应用而设计。相比其它功能类似的操作系统,它能够以较少的存储器占用空间实现大幅性能提升。 JBOSN RTOS 是专为嵌入式微处理器而设计的多层、模块化实时操作系统,提供了基于开放式系统标准的完整多任务环境。它是围绕 JBOSN 实时多任务处理超威内核 (nano-k
[工业控制]
JBOSN将RTOS植入Atmel的可定制<font color='red'>MCU</font>中
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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