MCS-51单片机的算术运算类指令包括加、减、乘、除、加1、减1等指令。这类指令有ADD、ADDC、INC、SUBB、DEC、DA、MUL、DIV共8种。表3-3算术运算类指令注:√表示该指令影响某一标志位。运算结果对PSW的影响同上述4条ADD指令。6.十进制调整指令十进制调整指令只有以下1条:该指令用于BCD码加法运算时,对BCD码的加法运算结果自动进行调整,但对BCD码的减法运算不能用此指令来调整。在运算过程中,单片机按二进制规则进行运算。......
2023-11-17
1.操作数类型
在众多指令中,大多数指令执行时都需要使用操作数,因此就存在怎样寻找操作数的问题。所谓寻址,实质上就是如何确定操作数的单元地址。根据指定方法的不同,有不同的寻址方式。在讲解寻址方式前,必须了解操作数有哪些类型。单片机指令系统中的操作数的类型有立即数、寄存器操作数和存储器操作数3种。
(1)立即数
立即数作为指令代码的一部分出现在指令中,它通常作为源操作数使用。
在汇编指令中立即数可用二进制、十六进制或十进制等数制形式表示,也可以写出一个可求解的表达式来表示。
(2)寄存器操作数
寄存器操作数是把操作数存放在寄存器中,即用寄存器存放源操作数或目的操作数。
通常在指令中给出寄存器的名称。在双操作数指令中,寄存器操作数可以作为源操作数,也可以作为目的操作数。
(3)存储器操作数
存储器操作数是把操作数存放在存储器中,因此在汇编指令中给出的是存储器的地址。由于地址给出的方式有多种,所有涉及的存储器操作数寻址方式最为复杂。
2.指令描述约定
为便于学习寻址方式和指令,在此先对指令中使用到的一些符号的约定予以说明。
Rn:当前选定的工作寄存器区R7~R0(n=7~0)。
direct:8位片内数据存储单元地址。它可以是一个内部数据RAM单元(0~127)(00H~7FH)或一个专用寄存器地址(SFR)[即I/O端口、控制寄存器、状态寄存器等(128~255)(80H~0FFH)]。
@Ri:通过寄存器R1或R0间接寻址的8位片内数据RAM单元(0~255),i=0,1。
#data:指令中8位立即数。(www.chuimin.cn)
#data16:指令中16位立即数。
addr16:16位目标地址。用于LCALL和LJMP指令,可指向64K字节程序存储器地址空间的任何地方。
addr11:11位目标地址。用于ACALL和AJMP指令,转向至下一条指令第一字节所在的同一个2K字节程序存储器地址空间内。
rel:带符号的8位偏移量字节(二进制补码)。用于SJMP和所有条件转移指令。偏移字节相对于下一条指令第一字节计算,在-128~+127范围内取值。
bit:内部数据RAM或部分专用寄存器可位寻址的位地址。
DPTR:数据指针,可用作16位的地址寄存器。
A:累加器。
B:专用寄存器,用于乘、除指令中。
C:进位标志或进位位。
bit:表示对该位进行取反操作。
(×):某寄存器或某单元的内容。
((×)):由×间接寻址的单元中的内容。
:当前指令存放的地址。
←:箭头左边的内容被箭头右边的内容所取代。
↔:箭头两边的内容相互交换。
有关单片机基础及应用的文章
MCS-51单片机的算术运算类指令包括加、减、乘、除、加1、减1等指令。这类指令有ADD、ADDC、INC、SUBB、DEC、DA、MUL、DIV共8种。表3-3算术运算类指令注:√表示该指令影响某一标志位。运算结果对PSW的影响同上述4条ADD指令。6.十进制调整指令十进制调整指令只有以下1条:该指令用于BCD码加法运算时,对BCD码的加法运算结果自动进行调整,但对BCD码的减法运算不能用此指令来调整。在运算过程中,单片机按二进制规则进行运算。......
2023-11-17
伪指令是程序员发给汇编程序的命令,用来设置符号值、保留和初始化存储空间、控制用户程序代码的位置。在汇编时伪指令自身不产生机器码,不属于指令系统。常用的伪指令有以下几种。1.汇编起始地址命令ORG该命令总是出现在源程序的开头位置,用于规定目标程序的起始地址。在END之后所写的指令,汇编程序不再处理。一个源程序只能有一个END指令,并放在所有指令的最后。例如:以上指令经汇编后,将对1000H开始的若干内存单元赋值。......
2023-11-17
条件转移指令共有8条。1.累加器判零转移指令累加器判零转移指令共有两条:这组指令的功能是对累加器的内容为“0”和不为“0”进行检测并转移。当各自的条件满足时,程序转向指定的目标地址。目标地址的计算与SJMP指令情况相同。指令执行时对标志位无影响。例如,已知累加器=00H,执行指令:2.数值比较转移指令数值比较转移指令共有4条。利用这两条指令可实现循环控制,循环次数存放于寄存器中或直接寻址单元中。......
2023-11-17
MCS-51的所有指令均不超过3个字节,且多为单字节指令。为了使“乱飞”程序在程序区迅速纳入正轨,应在编程时多用单字节指令,并在关键的地方人为地插入一些单字节指令NOP,或将有效单字节指令重写,称之为指令冗余。需要注意的是,乱飞的PC必须指向程序运行区,并且必须执行到冗余指令才能使PC纳入正确轨道。......
2023-11-17
MCS-51单片机逻辑运算及移位类指令包括与、或、异或、清0、取反、移位等操作指令。1.逻辑“与”运算指令逻辑“与”运算指令共有以下6条:这组指令中的前4条指令完成源操作数与累加器的内容相与,并将结果送入累加器中。其寻址方式、标志位影响、端口操作与ANL指令相同。表3-4逻辑运算及移位类指令注:√表示该指令影响某一标志位。......
2023-11-17
2)数据传送指令,加1、减1指令,逻辑运算指令不影响CY、OV和AC位。标志位的状态是控制转移类指令的判断条件。数据传送类指令是使用最频繁的指令,主要用于数据的复制、保存及交换。数据传送类指令的助记符有MOV、MOVX、MOVC、XCH、XCHD、SWAP、PUSH、POP。其通用数据传送类指令格式为MOV 目的操作数,源操作数表3-2数据传送类指令注:√表示该指令影响某一标志位。外部RAM或I/O口之间的数据传送指令共有4条。......
2023-11-17
2)片外程序存储空间,简称片外ROM。C51的6种存储类型与存储空间的对应关系如表5-2所示。表5-2C51的存储类型与存储空间的对应关系表5-3C51的存储类型及其数据长度和值域当使用存储类型data、bdata定义常量和变量时,C51编译器会将它们定位在片内数据存储空间中,这个存储区根据单片机的型号不同,其长度也不同。整型变量var的存储类型是pdata,C51编译器将该变量定位在片外RAM中,并用指令MOVX@Ri访问。......
2023-11-17
C51支持的数据类型分为基本数据类型、构造数据类型和指针类型。C51的基本数据类型如表5-1所示,表中下面的5种数据类型是C51有的而标准C没有的。在MCS-51系列单片机中选择合适的数据类型,对提高运行效率具有特殊的意义。如果在编写C51程序时使用大量的、不必要的数据类型变量,就会导致C51编译器相应地增加了所调用的库函数的数量,以处理大量增加的数据类型变量,会使编译后的程序变得过于庞大。......
2023-11-17
相关推荐