8051微控制器指令集

在上一个关于8051微控制器的教程中,我们看到了介绍8051,8051的体系结构和8051微控制器的内存组织。继续进一步,我们将查看本教程中的8051微控制器指令和8051寻址模式。

简介8051微控制器指令集

为任何微控制器编写程序包括以特定顺序向微控制器提供命令,必须执行它们才能执行特定的任务。微控制器的命令称为微控制器的指令集。

正如我们的句子是用单词制成的一样,微控制器(就此而言,任何计算机)程序是由说明制成的。在程序中编写的说明告诉微控制器要执行哪个操作。

指令集是计算机家族独有的。本教程介绍了8051微控制器指令集,也称为MCS-51指令集。

由于8051微控制器家族是8位处理器,因此8051微控制器指令集已针对8位控制应用进行了优化。作为典型的8位处理器,8051微控制器指令具有8位Opcodes。结果,8051微控制器指令集最多可以具有2个8= 256个说明。

在介绍8051微控制器指令集的详细信息之前,请阅读以下内容:8051微控制器内存组织

简要介绍8051微控制器的说明和组

在介绍8051微控制器指令集,指令类型和寻址模式之前,让我们简要介绍一下8051 MicroControllloler指令集的说明和指令组(MCS-51指令集)。

下表显示了每个组中的8051指令组和指令。8051微控制器指令集中有49个指令mnemonics,这49个mnemonics分为五组。

数据传输 算术 逻辑 布尔 程序分支
移动 添加 安尔 Clr LJMP
movc addc ORL setB AJMP
movx XRL 移动 SJMP
Inc Clr JC JZ
流行音乐 十二月 CPL JNC jnz
XCH mul RL JB CJNE
XCHD div RLC JNB djnz
da a RR JBC nop
RRC 安尔 lcall
交换 ORL 一个电话
CPL ret
埃蒂
JMP

8051地址模式

什么是寻址模式?

寻址模式是定位目标数据的一种方法,这也称为操作数。8051个微控制器家族允许五种类型的地址模式来解决操作数。他们是:

  • 立即解决
  • 注册地址
  • 直接寻址
  • 注册 - 间接地址
  • 索引寻址

立即解决

在立即寻址模式下,遵循OPCODE的操作数是8或16位的常数数据。立即解决的名称来自以下事实:要在内存中存储的常数数据紧接遵循OPODE。

要存储的常数值在说明本身中指定,而不是从寄存器中取出。必须复制常数数据的目标寄存器应与指令中提到的操作数相同。

例子:移动A,#030H

在这里,蓄能器装有30个(十六进制)。操作数中的#表示它是数据,而不是寄存器的地址。

当指令本身给出要加载的数据时,立即解决的问题非常快。

注册地址

在8051 MicroController Memory组织教程中,我们看到了RAM的组织和四个工作登记册,每个银行中有八个寄存器。

在寄存器地址模式下,指令中指定了八个寄存器(R0 - R7)之一。

在PSW登记册的帮助下选择适当的银行很重要。让我们查看假设选择bank0的登记簿示例。

例子:移动A,R5

在这里,银行0寄存器R5的8位内容移至累加器。

直接寻址

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

例子:移动A,47H

在这里,RAM位置47H中的数据移至累加器。

注册间接地址

在间接寻址模式或寄存器间接寻址模式下,操作数的地址指定为寄存器的内容。这将是一个示例更清楚的。

例子:mov a, @r1

@符号表示地址模式是间接的。例如,如果R1的内容为56H,则操作数在内部RAM位置56H。如果RAM位置56H的内容为24H,则将24H移至累加器中。

在间接地址模式下仅允许R0和R1。这些在间接地址模式下的登记册称为指针寄存器。

索引地址模式

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

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

例子:movc a, @a+dptr

在这里,操作数的地址是DPTR和累加器的内容之和。

笔记:一些作者和教科书添加了几种其他地址模式,例如绝对地址模式,相对地址模式和长期地址模式。

另请阅读:8051微控制器体系结构

8051微控制器指令集中的说明​​类型

在查看指令类型之前,让我们查看8051微控制器指令的结构。8051指令包括一个OPCODE(操作短 - 代码),其次是零字节,一个字节或两个字节的操作数。

该指令的OP代码部分包含助记符,该助记符指定要执行的操作类型。所有mnemonics或指令的OpCode部分都是一个字节大小。

进入指令的操作数部分,它定义了指令正在处理的数据。操作数可以是以下任何一个:

  • 没有操作数
  • 数据值
  • I/O端口
  • 内存位置
  • CPU寄存器

可以有多个操作数,教学格式如下:

助记符操作数,源操作数

一个简单的说明仅由OpCode组成。其他说明可能包括一个或多个操作数。指令可以是单字节指令,仅包含opcode或两个字节说明,其中第二个字节是操作数或三个字节说明,其中操作数构成了第二个字节和第三个字节。

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

  • 数据传输说明
  • 算术说明
  • 逻辑说明
  • 布尔或位操纵说明
  • 程序分支说明

现在,我们将简要了解这些说明。

数据传输说明

数据传输指令与寄存器之间的数据传输或外部程序内存或外部数据存储器有关。与数据传输相关的助记符如下。

  • 移动
  • movc
  • movx
  • 流行音乐
  • XCH
  • XCHD

mnemonic

描述

移动

移动数据
movc

移动代码

mocx

移动外部数据

将数据移至堆栈

流行音乐

从堆栈复制数据
XCH

两个寄存器之间的交换数据

XCHD

交换两个寄存器之间的低阶数据

下表列出了所有可能的数据传输指令以及其他详细信息,例如地址模式,大小占用和数字机循环。

8051微控制器指令集图1

算术说明

使用算术指令,您可以执行加法,减法,乘法和除法。算术指令还包括一个递增,减少一个和称为小数调整累加器的特殊指令。

与8051微控制器指令集的算术指令相关的助记符是:

  • 添加
  • addc
  • Inc
  • 十二月
  • mul
  • div
  • da a

mnemonic

描述

添加

没有随身携带
addc

随身携带

随身携带
Inc

增量1

十二月

减少1
mul

div

划分
da a

小数调整累加器(寄存器)

算术指令对数据格式不了解,即签名,未签名,ASCII,BCD等。此外,算术指令执行的操作会影响PSW寄存器中的随身携带,溢出,零等的标志。

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

8051微控制器指令集图3

逻辑说明

下一组指令是逻辑说明,它们执行逻辑操作,例如和或XOR,不旋转,清除和交换。逻辑说明是根据数据的字节进行逐个数字进行的。

与逻辑说明相关的助记符如下:

  • 安尔
  • ORL
  • XRL
  • Clr
  • CPL
  • RL
  • RLC
  • RR
  • RRC
  • 交换

mnemonic

描述

安尔

逻辑和
ORL

逻辑或

XRL

Clr

清除注册

CPL

补充登记册
RL

向左旋转字节

RLC

旋转一个字节,向左携带钻头
RR

向右旋转字节

RRC

旋转一个字节并将钻头向右携带
交换

在字节中交换较低和更高的小点心

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

8051微控制器指令集图2

布尔或位操纵说明

顾名思义,布尔或位操纵说明涉及位变量。我们知道,RAM中有一个特殊的位可调区域,一些特殊功能寄存器(SFR)也可以解决。

对应于布尔或位操作说明的助记符是:

  • Clr
  • setB
  • 移动
  • JC
  • JNC
  • JB
  • JNB
  • JBC
  • 安尔
  • ORL
  • CPL

mnemonic

描述
Clr

清除一点(重置为0)

setB

设置一点(设置为1)
移动

移动一点

JC

如果设置了携带国旗,请跳跃
JNC

如果未设置携带国旗,请跳跃

JB

如果设置了指定位,请跳跃
JNB

如果未设置指定位,请跳跃

JBC

如果设置了指定位,请跳跃并清除位
安尔

钻头和

ORL

钻头或
CPL

补充位

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

8051微控制器指令集图4_2

程序分支说明

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

  • LJMP
  • AJMP
  • SJMP
  • JZ
  • jnz
  • CJNE
  • djnz
  • nop
  • lcall
  • 一个电话
  • ret
  • 埃蒂
  • JMP

mnemonic

描述
LJMP

跳远(无条件)

AJMP

绝对跳跃(无条件)
SJMP

短跳(无条件)

JZ

如果A等于0,请跳跃
jnz

如果A不等于0,请跳跃

CJNE

比较并跳跃如果不相等
djnz

减少并跳跃(如果不是零)

nop

没有操作
lcall

长时间呼叫子例程

一个电话

绝对致电子例程(无条件)
ret

从子例程返回

埃蒂

从中断返回
JMP

跳到地址(无条件)

所有这些说明,除了NOP(无操作)以一种或其他方式影响程序计数器(PC)。这些说明中的一些具有决策能力,然后再将控制权转移到程序的其他部分。

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

8051微控制器指令集图5_1

在本教程中,我们看到了8051 MicroController指令集的简介,在8051 MicroController中解决了8051微控制器中的模式,并在8051 MicroController的指令集中进行了不同类型的指令。

20个回应

发表评论

您的电子邮件地址不会被公开。

电子豪华粉丝
<\/i>","library":""}}" data-widget_type="nav-menu.default">
Baidu
map