单片机指令系统与寻址方式
单片机要正常运作,事先需编制程序,再把程序放入存贮器中,然后由CPU执行该程序。程序是由指令组成的,指令的基本组成是操作码和操作数。单片机的品种很多,设计时怎样表示操作码和操作数,都有各自的规定,再有指令代码也各不相同,因此,必须对所选单片机的全部指令,也就是所谓“指令系统”,有足够的了解。各个系列的单片机虽然有不同的指令系统,但也有其共同性。掌握一种单片机的指令系统,对其它系列单片机可以起到触类旁通的作用。MCS-51单片机应用广泛,派生品种多,具有代表性,所以,这里以MCS-51系列的指令系统为例说明“指令”的组成和应用。
1、MOV A,#20H
这条指令表示把20H这个数送入累加器A中(一个特殊功能寄存器)。
2、ADD A,70H
这条指令表示把累加器A中的内容(在上例中送入的#20H)和存贮器中地址为70H单元中的内容(也是一个数字),通过算术逻辑单元(英文缩写为ALU)相加,并将结果保留在A中。这里MOV、ADD等称为操作码,而A、#20H、70H等均称为操作数。在汇编语言程序中,操作码通常由英文单词缩写而成,这样有助于记忆,所以又称助记符。如MOV就是英文单词MOVE的缩写,含有搬移的意思;而ADD即为英文单词,其意为相加。因此,对于略懂英语的用户,掌握单片机指令的含意是较为方便的。操作数有多种表示法,如以上的#20H称为立即数,即20H就是真正的操作数。而70H是存贮器中某个单元的地址,在该单元中,放着操作数(比如说是3AH),ADD A,70H不是将70H和A中的内容相加,而是从存贮器70H单元中将3AH取出和A中的内容相加。由上可知,要找到实际操作数,有时就要转个弯,甚至转几个弯,这个过程称为寻址,MCS-51共有7种寻址方式,现介绍如下:
一、立即寻址:操作数就写在指令中,和操作码一起放在程序存贮器中。把“#”号放在立即数前面,以表示该寻址方式为立即寻址,如#20H。
二、寄存器寻址:操作数放在寄存器中,在指令中直接以寄存器的名字来表示操作数的地址。例如MOV A,R0就属于寄存器寻址,即将R0寄存器的内容送到累加器A中。
三、直接寻址:操作数放在单片机的内部RAM某单元中,在指令中直接写出该单元的地址。如前例的ADD A,70H中的70H。
四、寄存器间接寻址:操作数放在RAM某个单元中,该单元的地址又放在寄存器R0或R1中。
如果RAM的地址大于256,则该地址存放在16位寄存器DPTR(数据指针)中,此时在寄存器名前加@符号来表示这种间接寻址。如MOV A,@ R0。其它还有变址寻址、相对寻址、位寻址等。
五、位寻址(即可寻找某位的内容)功能,适于按位进行逻辑运算的位处理器。除128字节RAM、4k字节ROM和中断、串行口及定时器模块外,还有4组I/O口P0~P3,余下的就是CPU的全部组成。把4kROM换为EPROM就是8751的结构,如去掉ROM/EPROM部分即为8031的框图,如果将ROM置换为Flash存贮器或EEPROM,或再省去某些I/O,即可得到51系列的派生品种,如89C51、AT89C2051等单片机的框图。
单纯的对某一个储存单元的某位数进行操作应该怎样寻址呢?
这就需要位寻址
前面的几种寻址方式都是对存储单元的整个字节进行操作,如果要对某存储单元中的某位数进行操作,就要用位寻址方式。总结出来一个表,对照就行了
1.位寻址的范围
位寻址并不能操作存储器中任何单元中的某位数,它只能操作能进行位寻址的存储单元。可位寻址的单元如下。
① 数据存储器(RAM)内部的位寻址区。该区的字节单元地址是20H~2FH,共有16个存储单元,每个单元有8位,共有128位。
② 特殊功能寄存器(SFR)中一些可位寻址的寄存器。SFR 中可位寻址的寄存器有11 个(可位寻址的寄存器见表的第1列),每个寄存器有8位,共有88位,各位的位地址见表
。
2.位寻址的方法
位寻址的方法通常有以下几种。
(1)直接使用位地址
例如:MOV C,01H
这条指令的含义是将01H位(即20H单元的第1位)的数据送入程序状态字寄存器(PSW)的CY位(进位标志位)。
(2)采用“字节地址.位序号”形式
例如:MOV C,20H.1
这条指令的含义是将20H单元的第1位数据送入PSW的CY位。
(3)采用“位的符号地址”形式
例如:CPL AC
这条指令的含义是将PSW的AC位(辅助进位标志位)取反。CPL意为“位取反”。
(4)采用“寄存器符号.位序号”形式
例如:ANL C,PSW.0
这条指令的含义是将PSW的第0位与CY位进行相与运算,再将相与的结果保存在CY位。
这就是MCS-51系列单片机采用的7种寻址方式

相关问答
【 MCS-51 共有哪7种 寻址方式 ?各有什么特点?】作业帮[最佳回答](1)立即寻址:操作数就包含在指令代码中,在操作码之后,称为立即数,用“#”表示.(2)直接寻址:直接使用数所在单元的地址找到了操作数,所以称这种方法...
【怎样计算立即 寻址 】作业帮[最佳回答]mcs-51单片机的一种寻址方式,操作数就写在指令中,和操作码一起放在程序存贮器中.把“#”号放在立即数前面,以表示该寻址方式为立即寻址,如#20H.立即...
怎样计算立即 寻址 ?mcs-51单片机的一种寻址方式,操作数就写在指令中,和操作码一起放在程序存贮器中。把“#”号放在立即数前面,以表示该寻址方式为立即寻址,如#20H。立即数可...
MCS-51单片机 内部RAM中_______单元为位 寻址 区,其位地址范围为_____________?__20H~2FH__单元为位寻址区,其位地址范围为__00H~7FH___.__20H~2FH__单元为位寻址区,其位地址范围为__00H~7FH___.
MCS-51单片机 的存储器地址空间如何划分?各地址空间的地址范...[最佳回答]MCS-51单片机的存储器地址空间,讲起来,要用几页.简单介绍如下:MCS-51的存储器有片内RAM、片外RAM和ROM三个空间.片内RAM:地址范围是00H到7FH(5...
其功能是.4、 MCS-51单片机 有组工作寄存器,它们的地址范围...[最佳回答]不全会.
在 MCS-51单片机 应用系统中,外接程序存储器和数据存储器的地...程序相当于给微处理器处理问题的一系列命令。其实程序和数据一样,都是由机器码组成的代码串。只是程序代码则存放于程序存储器中。MCS-51具有64kB程...
单片机 的题吖,求解!!!15. MCS — 51单片机 在执行MOVXA,@DPTR...[最佳回答]P0口送低8位,P2口送高8位这书本都有讲的.,好好看书
MCS-51单片机 有多少个特殊功能寄存器?它们的名称和功能?mcs-51单片机内的i/o口锁存器、定时器、串行口缓冲器以及各种控制寄存器和状态寄存器都以特殊功能寄存器的形式出现。它们位于片内数据存储器之上,离散地分布...
MCS-51 系列 单片机 的存储器可划为几个空间?其地址范围及容量...MCS-51系列单片机的存储器可划为几个空间?其地址范围及容量是多少?在使用上有什么不同?讨论回答(6)1、空间划分存储器分为程序存储器(ROM)和数据存储器(RAM...