小夏天的大西瓜 发表于 2025-3-28 21:52

单片机的指令系统


单片机种类繁多,设计时怎样表示操作码和操作数,都有各自的规定,指令代码也各不相同。各个系列的单片机虽然有不同的指令系统,但也有其共同性。MCS-51单片机应用广泛,派生品种多,具有代表性,这里以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中的内容相加。

公羊子丹 发表于 2025-4-2 07:44

51 单片机的指令系统确实很经典,很多初学者都会从它开始入门汇编语言。

周半梅 发表于 2025-4-2 07:45

MOV 和 ADD 这种基本指令在大多数 CPU 架构里都有类似的指令,不过格式可能会有所不同。

帛灿灿 发表于 2025-4-2 07:46

立即数寻址和直接寻址的区别在这里讲得很清楚,理解这些对后续写汇编优化代码很有帮助。

童雨竹 发表于 2025-4-2 07:47

其实 51 单片机的指令集算是 CISC 结构,和现代的 RISC 处理器比起来,指令执行周期会更长。

万图 发表于 2025-4-2 07:48

8051 还支持 位寻址,比如 SETB P1.0 这种指令,可以直接操作某个位,在 IO 口控制上很方便。

Wordsworth 发表于 2025-4-2 07:49

51 的指令助记符确实挺直观的,比如 MOV 代表移动,SUBB 代表带进位减法,对初学者很友好。

Bblythe 发表于 2025-4-2 07:50

51 系列有些特殊的寻址方式,比如 寄存器间接寻址(MOV A, @R0),这个用来操作数据表挺方便的。

Pulitzer 发表于 2025-4-2 07:51

现代的单片机,比如 STM32,大部分都用 寄存器寻址,不像 51 那样依赖外部 RAM。

Uriah 发表于 2025-4-2 07:52

如果要深入了解 51 指令集,可以看看它的 机器码格式,了解指令是如何编码的,对调试也有帮助。

Clyde011 发表于 2025-4-2 07:53

现在 51 系列虽然用得少了,但很多工业设备里还在用,熟悉它的指令系统还是很有价值的!
页: [1]
查看完整版本: 单片机的指令系统