首页 > 新闻资讯 > 新闻详情

简述8051微控制器指令集及寻址方式

IC先生 IC先生 2243 2022-10-11 16:03:22

为任何微控制器编写程序包括以特定顺序向微控制器发出命令,这些命令必须按特定顺序执行才能执行特定任务。微控制器的命令称为微控制器指令集。

正如一句话是由每个汉字组成的一样,微控制器(包括任何计算机)程序都是由指令组成的。写在程序中的指令告诉微控制器执行哪个操作。指令集是计算机系列独有的。在本文当中,小编简单介绍下8051微控制器指令集,或称为MCS-51指令集。

由于8051系列微控制器是8位处理器,因此8051微控制器指令集针对8位控制应用进行了优化。作为典型的8位处理器,8051微控制器指令具有8位操作码。因此,8051微控制器指令集最多可以有28=256条指令。

8051微控制器

指令和组的介绍

在介绍8051单片机指令集、指令类型和寻址模式之前,首先需要简要了解一下8051单片机指令集(MCS-51指令集)的指令和指令组。

下表格显示了8051指令组和每组中的指令。8051单片机指令集中有49个指令助记符,这49个助记符分为5组。

数据传输指令 算术指令 逻辑指令 布尔指令 程序分枝指令
MOV ADD ANL CLR LJMP
MOVC ADDC ORL SETB AJMP
MOVX SUBB XRL MOV SJMP
PUSH INC CLR JC JZ
POP DEC CPL JNC JNZ
XCH MUL RL JB CJNE
XCHD DIV RLC JNB DJNZ
DA A RR JBC NOP
RRC ANL LCALL
SWAP ORL ACALL
CPL RET
RETI
JMP

寻址模

寻址模式是一种定位目标数据的方法,也称为操作数。8051系列微控制器允许使用五种寻址模式来寻址操作数,分别是:

  • 立即寻址
  • 寄存器寻址
  • 直接寻址
  • 寄存器——间接寻址
  • 索引寻址

1、立即寻址

在立即寻址模式下,操作码后面的操作数是8位或16位的常量数据。立即寻址的名称来自于要存储在内存中的常量数据紧跟在操作码之后的事实。要存储的常量值在指令本身中指定,而不是从寄存器中获取。常量数据必须复制到的目标寄存器应该与指令中提到的操作数大小相同。

示例MOV A,#030H 

其中,累加器加载了30(十六进制)。操作数中的#表示它是一个数据而不是寄存器的地址。立即寻址非常快,因为要加载的数据在指令本身中给出。

2、寄存器寻址

在寄存器寻址模式下,八个寄存器(R0–R7)之一被指定为指令中的操作数。

在PSW寄存器的帮助下选择合适的Bank很重要。下面看一个假设选择Bank0的寄存器寻址示例。

示例:MOV A,R5 

其中,Bank0的寄存器R5的8位内容被移动到累加器。

3、直接寻址

在直接寻址模式中,数据的地址被指定为指令中的操作数。使用直接寻址模式,可以访问任何寄存器或片上变量。这包括通用RAM、SFR、I/O端口、控制寄存器。

示例:MOV A,47H 

其中,RAM单元47H中的数据被移动到累加器。

4、寄存器间接寻址

在间接寻址模式或寄存器间接寻址模式中,操作数的地址被指定为寄存器的内容。下面举个列子:

示例:MOV A,@R1 

@符号表示寻址方式是间接的。例如,如果R1的内容为56H,则操作数位于内部RAM位置 56H。如果RAM单元56H的内容是24H,则将24H移入累加器。

在间接寻址模式中只允许使用R0和R1。这些间接寻址模式的寄存器称为指针寄存器。

5、索引寻址模式

在索引寻址模式下,操作数的有效地址是基址寄存器和偏移寄存器的总和。基址寄存器可以是数据指针 (DPTR) 或程序计数器 (PC),而偏移寄存器是累加器 (A)。

在索引寻址模式下,只能使用MOVC和JMP指令。从查找表中检索数据时,索引寻址模式很有用。

示例:MOVC A,@A+DPTR 

这里,操作数的地址是DPTR和Accumulator的内容之和。

注意:另外有些朋友可能还会添加了一些其它寻址模式,例如绝对寻址模式、相对寻址模式和长寻址模式。

指令集中的指令类型

在看指令类型之前,可以先看看805单片机指令的结构。一条8051指令由一个操作码(操作代码的简称)和后跟零字节、一字节或两字节大小的操作数组成。

指令的操作码部分包含助记符,它指定要执行的操作类型。指令的所有助记符或操作码部分都是一个字节大小。至于指令的操作数部分,它定义了指令正在处理的数据。操作数可以是以下任何一种:

  • 无操作数
  • 数据值
  • 输入输出端口
  • 内存位置
  • 中央处理器寄存器

其实,可以有多个操作数,指令格式如下:

助记符、目的操作数、源操作数

一条简单的指令只包含操作码。其他指令可以包括一个或多个操作数。指令可以是仅包含操作码的单字节指令,也可以是双字节指令,其中第二个字节是操作数,也可以是三字节指令,其中操作数构成第二个和第三个字节。

根据它们执行的操作,8051微控制器指令集中的所有指令分为五组,分别是:

  • 数据传输指令
  • 算术指令
  • 逻辑指令
  • 布尔或位操作指令
  • 程序分支指令
1、数据传输指令

数据传输指令与寄存器或外部程序存储器或外部数据存储器之间的数据传输相关。下面给出了与数据传输指令相关的助记符。

  • MOV
  • MOVC
  • MOVX
  • PUSH
  • POP
  • XCH
  • XCHD
助记符 描述
MOV 移动数据
MOVC 移动代码
MOVX 移动外部数据
PUSH 将数据移动到堆栈
POP 从堆栈复制数据
XCH 在两个寄存器之间交换数据
XCHD 在两个寄存器之间交换低阶数据
下表列出了所有可能的数据传输指令以及其他详细信息,例如寻址模式、占用的大小和所需的机器周期数。

数据传输指令

2、算术指令

使用算术指令,可以执行加法、减法、乘法和除法。算术指令还包括加一、减一和称为十进制调整累加器的特殊指令。

与8051单片机指令集的算术指令相关的助记符有:

  • ADD
  • ADDC
  • SUBB
  • INC
  • DEC
  • MUL
  • DIV
  • DA A
助记符 描述
ADD 无进位加法
ADDC 带进位加法
SUBB 带进位减法
INC 增加1
DEC 减1
MUL
DIV
DA A 十进制调整累加器(A寄存器)

算术指令不会了解数据格式,即有符号、无符号、ASCII、BCD等。此外,算术指令执行的操作会影响PSW寄存器中的进位、溢出、零等标志。

下表中整理了与算术指令相关的所有可能的助记符。

算术指令

3、逻辑指令

逻辑指令执行逻辑运算,如AND、OR、XOR、NOT、Rotate、Clear和Swap。逻辑指令是按位对数据字节执行的。与逻辑指令相关的助记符如下:

  • ANL
  • ORL
  • XRL
  • CLR
  • CPL
  • RL
  • RLC
  • RR
  • RRC
  • SWAP
助记符 描述
ANL 逻辑与
ORL 逻辑或
XRL 异或
CLR 清除寄存器
CPL 补充寄存器
RL 向左旋转一个字节
RLC 循环一个字节并左进位
RR 向右旋转一个字节
RRC 循环一个字节并向右进位
SWAP 在一个字节中交换更低和更高的半字节

下表显示了逻辑指令的所有可能助记符。

逻辑指令

4、布尔或位操作指令

顾名思义,布尔或位操作指令处理位变量。众所周知,RAM中有一个特殊的位寻址区域,一些特殊功能寄存器 (SFR) 也是位寻址的。

布尔或位操作指令对应的助记符为:

  • CLR
  • SETB
  • MOV
  • JC
  • JNC
  • JB
  • JNB
  • JBC
  • ANL
  • ORL
  • CPL
助记符 描述
CLR 清零(复位为0)
SETB 设置一个位(设置为1)
MOV 移动一点
JC 如果设置了进位标志则跳转
JNC 如果未设置进位标志则跳转
JB 如果指定的位被设置则跳转
JNB 如果指定位未设置则跳转
JBC 如果指定的位被设置则跳转并清除该位
ANL 按位与
ORL 按位或
CPL 补位

这些指令可以在位级别执行设置、清除和/或补码等。下表中指定了布尔指令的所有可能助记符。

布尔或位操作指令

5、程序分支指令

8051微控制器指令集中的最后一组指令是程序分支指令,这些指令控制程序逻辑的流程。程序分支指令的助记符如下。

  • LJMP
  • AJMP
  • SJMP
  • JZ
  • JNZ
  • CJNE
  • DJNZ
  • NOP
  • LCALL
  • ACALL
  • RET
  • RETI
  • JMP

助记符 描述
LJMP 长跳跃(无条件)
AJMP 绝对跳跃(无条件)
SJMP 短短跳(无条件)
JZ 如果A等于0则跳转
JNZ 如果A不等于0则跳转
CJNE 如果不相等则比较并跳转
DJNZ 如果不为零则递减和跳转
NOP 无操作
LCALL 长调用子程序
ACALL 绝对调用子程序(无条件)
RET 从子程序返回
RETI 从中断返回
JMP 跳转到地址(无条件)
除NOP(无操作)外,所有这些指令都会以某种方式影响程序计数器(PC)。其中一些指令在将控制权转移到程序的其他部分之前具有决策能力。

下表显示了与程序分支指令相关的所有助记符。

程序分支指令

总结

以上就是关于8051微控制器指令集以及寻址模式的相关内容介绍,记住这些指令集是非常有必要的,因为为任何微控制器编写程序包括以特定顺序向微控制器发出命令,这些命令必须按特定顺序执行才能执行任务。
推荐商品
0402B103K500CT
库存:100000
¥ 0.00267
TPS2546RTER
库存:6000
¥ 5.65
CL05C100JB5NNNC
库存:0
¥ 0.01561
EECF5R5H105
库存:0
¥ 110.175
BTT6200-4ESA
库存:12000
¥ 13.56
版权声明: 部分文章信息来源于网络以及网友投稿,本网站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性,如本站文章和转稿涉及版权等问题,请作者及时联系本站,我们会尽快处理。
标题:

简述8051微控制器指令集及寻址方式


网址: https://www.mrchip.cn/newsDetail/877
文章标签: 微控制器
0 购物车
0 消息