8051微控制器指令集和寻址模式

发布时间:2024-01-31  

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


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


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


指令和组的介绍

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


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

pYYBAGNFMQmAVOpHAABvKoDwuR4721.png

寻址模式

寻址模式是一种定位目标数据的方法,也称为操作数。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

poYBAGNFMSGAYu9yAABLCG0ecms430.png

下表列出了所有可能的数据传输指令以及其他详细信息,例如寻址模式、占用的大小和所需的机器周期数。

poYBAGNFMl2Aa-VzAAFW_JuUsgE445.jpg

2、算术指令

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

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

  • ADD

  • ADDC

  • SUBB

  • INC

  • DEC

  • MUL

  • DIV

  • DA A

pYYBAGNFMTqAaN0jAAA2A3OlN8w558.png

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

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

poYBAGNFMl2ANoPzAAE0fYXoJ3Q527.jpg

3、逻辑指令

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

  • ANL

  • ORL

  • XRL

  • CLR

  • CPL

  • RL

  • RLC

  • RR

  • RRC

  • SWAP

pYYBAGNFMU-ALmsMAABNoZIb-JQ746.png

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

pYYBAGNFMmGACcHPAAFB85tdNNc670.jpg

4、布尔或位操作指令

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

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

  • CLR

  • SETB

  • MOV

  • JC

  • JNC

  • JB

  • JNB

  • JBC

  • ANL

  • ORL

  • CPL

poYBAGNFMWOAXnZJAABmts-F4H8952.png

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

poYBAGNFMmKAG5UNAAEAq5sa0cA170.jpg

5、程序分支指令

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

  • LJMP

  • AJMP

  • SJMP

  • JZ

  • JNZ

  • CJNE

  • DJNZ

  • NOP

  • LCALL

  • ACALL

  • RET

  • RETI

  • JMP

poYBAGNFMYCAWlSFAAB1TV-kdQU066.png

除NOP(无操作)外,所有这些指令都会以某种方式影响程序计数器(PC)。其中一些指令在将控制权转移到程序的其他部分之前具有决策能力。

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

pYYBAGNFMmSAeUw1AAFIKY1NsXE115.jpg

总结

以上就是关于8051微控制器指令集以及寻址模式的相关内容介绍,记住这些指令集是非常有必要的,因为为任何微控制器编写程序包括以特定顺序向微控制器发出命令,这些命令必须按特定顺序执行才能执行任务。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    -0x1FH)、位寻址区(0x02H-0x2FH)、通用RAM区(0x30H-0x70H),SFR寄存区(0x80-0xFF)这段空间定义51单片机所有的控制寄存器和状态寄存器。下面......
    :      MCS-51单片机中,除了程序计数器PC和4组工作寄存器组外,其它所有的寄存器均为特殊功能寄存器(SPR),分散在片内RAM区的高128字节中,地址范围为80H~0FFH。SFR中有11个寄存器具有位寻址......
    通用寄存器还能提高程序编制的灵活性,因此,在单片机的应用编程中应充分利用这些寄存器,以简化程序设计,提高程序运行速度。 位寻址区 内部RAM的20H~2FH单元,既可作为一般RAM单元使用,进行......
    某个位,直接加以置位为1或复位为0。 位寻址的范围,也就是哪些部份可以进行位寻址: 1、我们在第十二课学习51单片机的存储器结构时,我们已知道在单片机的内部数据存储器RAM的低128单元中有一个区域叫位寻址......
    地址可以被8整除的特殊功能寄存器,也可以支持位寻址。(52系列,在此范围,还有128字节的 RAM,必须间接寻址才能读写)。 注意,在51单片机的内部RAM中进行编程的时候,必须使用MOV指令......
    说一说学51时候躺过的坑——bit和sbit的区别;什么是bit和sbit?他们有什么区别? 在刚学51单片机的时候刚看到这个两个东西的时候就是一脸懵逼,脑子里面第一反应就是,这是什么鬼啊,C语言......
    先不作介绍,不懂的请查阅51单片机相关资料。)   51单片机内部共有21个SFR,其布局如图2,从图中可以看出,每个SFR占1个字节,多数字节单元中的每一位又有专用的“位名称”。这21个SFR又按是否可以位寻址......
    ~7FH)bdata:片内RAM的可位寻址区(20H~2FH),允许字节和位混合访问idata:单片机间接访问的片内RAM区,允许访问全部片内RAMpdata:Ri间接访问的片外RAM的低256B......
    。它们是用于存放执行的中间结果和过程数据的。MCS-51的数据存储器均可读写,部分单元还可以位寻址。   MCS-51单片机的内部数据存储器在物理上和逻辑上都分为两个地址空间,即: 数据存储器空间(低......
    单片机keil C中的data、bdata、idata、xdata、hdata、pdata、code解释;从数据存储类型来说,8051系列有片内、片外程序存储器,片内、片外数据存储器,片内程序存储器还分直接寻址区和间接寻址......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>