单片机的指令和寻址方式 下载本文

内容发布更新时间 : 2024/5/11 0:30:14星期一 下面是文章的全部内容请认真阅读。

单片机的指令和寻址方式

单片机要正常运作,事先需编制程序,再把程序放入存贮器中,然后由 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 等单片机的框图。

单片机寻址方式越多,找操作数越方便,单片机的功能就越强。 tips:感谢大家的阅读,本文由我司收集整编。仅供参阅!