MCS-51单片机逻辑运算及移位类指令包括与、或、异或、清0、取反、移位等操作指令。1.逻辑“与”运算指令逻辑“与”运算指令共有以下6条:这组指令中的前4条指令完成源操作数与累加器的内容相与,并将结果送入累加器中。其寻址方式、标志位影响、端口操作与ANL指令相同。表3-4逻辑运算及移位类指令注:√表示该指令影响某一标志位。......
2023-11-17
MCS-51单片机的算术运算类指令包括加、减、乘、除、加1、减1等指令。这类指令大都影响标志位。这类指令有ADD、ADDC、INC、SUBB、DEC、DA、MUL、DIV共8种。算术运算类指令如表3-3所示。
表3-3 算术运算类指令
注:√表示该指令影响某一标志位。
1.不带进位的加法指令
不带进位的加法指令共有以下4条:
这组指令的一个加数总是累加器A,采用立即数、直接地址、间接地址以及寄存器寻址方式将其内容与累加器(A)内容相加,结果送入累加器(A)中。如果运算结果的最高位D7有进位输出,则将进位标志位(CY)置1,否则将CY清0;如果D3有进位输出,将辅助进位标志位(AC)置1,否则将AC清0。如果D6有进位而D7没有或者D7有进位D6没有,将溢出标志位(OV)置1,否则将(OV)清0;奇偶标志位(P)将随累加器(A)中1的个数而变化。
例如,若已知(A)=0C3H,(R0)=0AAH,执行指令
后结果为:(A)=6DH。标志位为:AC=0,CY=1,OV=1,P=1。
运算过程如下:
2.带进位的加法指令
带进位的加法指令共有以下4条:
这4条指令的功能是将源操作数所指示的内容和累加器(A)中的内容及进位位(CY)相加,结果存入累加器(A)中。运算结果对PSW的影响同上述4条ADD指令。
例如,若(A)=85H,(20H)=6DH,CY=1,执行指令
后结果为:(A)=0F3H。标志位为:CY=0,OV=0,AC=1,P=0。
运算过程如下:
3.带借位的减法指令
带借位的减法指令共有以下4条:这4条指令的功能是把累加器(A)中的内容减去源操作数所指示的内容及进位CY,将差存入累加器(A)中。如果运算结果的最高位D7有借位输出,则将进位标志位(CY)置1,否则将CY清0;如果D3有借位输出,将辅助进位标志位(AC)置1,否则将AC清0。如果D6有借位而D7没有或者D7有借位而D6没有,将溢出标志位(OV)置1,否则将(OV)清0;奇偶标志位(P)将随累加器(A)中1的个数而变化。
例如,若(A)=0C9H,(R2)=54H,CY=1,执行指令
后结果为:(A)=74H。标志位为:CY=0,OV=1,AC=0,P=0。
运算过程如下:
4.增量(加1)指令
增量(加1)指令共有以下5条:
增量(加1)指令的功能是将指定单元的内容加1再送回该单元。即使加1溢出时也不进位CY。需要注意的是,INC direct指令中,direct为I/O端口(即地址为80H、90H、0A0H、0B0H)时,则CPU进行“读—修改—写”操作,其功能是先读入端口锁存器的内容,然后加1,继而输出到端口。
例如,若已知(A)=0FFH,(R3)=0FH,(30H)=0F1H,(R0)=40H,(40H)=01H,(DPTR)=1234H,执行指令
后结果为:(A)=00H,(R3)=10H,(30H)=0F2H,(40H)=02H,(DPTR)=1235H。
5.减量(减1)指令
减量(减1)指令共有以下4条:
(www.chuimin.cn)
减量(减1)指令的功能是将指定单元的内容减1再送回该单元。需要注意的是,没有操作数为DPTR的减1指令。同样,在指令DEC direct中,direct为I/O端口时同INC direct指令,这里不再赘述。
例如,若已知(A)=0FH,(R7)=19H,(30H)=00H,(R1)=40H,(40H)=0FFH,执行指令
后结果为:(A)=0EH,(R7)=18H,(30H)=0FFH,(40H)=0FEH,PSW中仅P位改变。
6.十进制调整指令
十进制调整指令只有以下1条:
该指令用于BCD码加法运算时,对BCD码的加法运算结果自动进行调整,但对BCD码的减法运算不能用此指令来调整(只用于加法,跟在加法指令后面,减法不适用)。调整的目的在于单片机中,十进制数字0~9一般可用BCD码表示,它是以4位二进制编码的形式出现的。在运算过程中,单片机按二进制规则进行运算。但因为对于4位二进制数可有16种状态,从0000~1111,运算时逢16进位,而对于十进制数只有10种状态,从0000~1001,运算时逢10进位。这样,十进制BCD码按二进制规则运算时,其结果就可能不正确,必须进行调整,以使运算的结果恢复为十进制数。其调整过程如图3-9所示。
例如,设(A)=57H,(R5)=66H,执行指令
图3-9 DA A指令调整过程示意图
后结果为:(A)=23H,CY=1。
7.乘法指令
乘法指令只有以下1条:
该指令用于实现两个8位无符号数的乘法操作。两个无符号数分别存放在A和B中,乘积为16位,积的低8位存于A中,积的高8位存于B中。如果积大于255,即B不为0,则OV置1,否则OV清0,该指令执行后,CY总是清0。
例如,设(A)=50H,(B)=0A0H,执行指令
后结果为:(B)=32H,(A)=00H(即积为3200H),OV=1,CY=0。
8.除法指令
除法指令只有以下1条:
该指令实现两个8位无符号数的除法操作。一般被除数放在A中,除数放在B中,指令执行后,商放在A中,余数放在B中,进位CY和溢出标志位OV均清0。只有当除数为0时,A和B的内容为不确定值,此时OV置位,说明除法溢出。
乘法指令和除法指令是MCS-51指令系统中执行时间最长的指令,需要4个机器周期。
例如,设(A)=0FBH,(B)=12H,执行指令
后结果为:(A)=0DH,(B)=11H,OV=0,CY=0。
【例3-9】试编写计算1234H+5678H的程序,将和的高位存入41H,低8位存入40H。
【程序】
【例3-10】编写6位BCD码加法运算程序,设被加数存入片内RAM3 0H~32H单元中,加数存入片内RAM 40H~42H中,低位在前,高位在后,各单元中均为压缩的BCD码。将结果之和分别存入50H~52H单元中。
【程序】
【例3-11】试编程把A的二进制数转换成3位BCD码,百位数放在20H,十位、个位数放在21H中。
【编程说明】先对要转换的一进制数除以100,商数即为百位数,余数部分再除以10,商数余数分别为十位、个位数,它们在A、B的低4位,通过SWAP、ADD组合成一个压缩的BCD数,使十位数放在A7~4,个位数放在A3~0。
【程序】
有关单片机基础及应用的文章
MCS-51单片机逻辑运算及移位类指令包括与、或、异或、清0、取反、移位等操作指令。1.逻辑“与”运算指令逻辑“与”运算指令共有以下6条:这组指令中的前4条指令完成源操作数与累加器的内容相与,并将结果送入累加器中。其寻址方式、标志位影响、端口操作与ANL指令相同。表3-4逻辑运算及移位类指令注:√表示该指令影响某一标志位。......
2023-11-17
条件转移指令共有8条。1.累加器判零转移指令累加器判零转移指令共有两条:这组指令的功能是对累加器的内容为“0”和不为“0”进行检测并转移。当各自的条件满足时,程序转向指定的目标地址。目标地址的计算与SJMP指令情况相同。指令执行时对标志位无影响。例如,已知累加器=00H,执行指令:2.数值比较转移指令数值比较转移指令共有4条。利用这两条指令可实现循环控制,循环次数存放于寄存器中或直接寻址单元中。......
2023-11-17
伪指令是程序员发给汇编程序的命令,用来设置符号值、保留和初始化存储空间、控制用户程序代码的位置。在汇编时伪指令自身不产生机器码,不属于指令系统。常用的伪指令有以下几种。1.汇编起始地址命令ORG该命令总是出现在源程序的开头位置,用于规定目标程序的起始地址。在END之后所写的指令,汇编程序不再处理。一个源程序只能有一个END指令,并放在所有指令的最后。例如:以上指令经汇编后,将对1000H开始的若干内存单元赋值。......
2023-11-17
MCS-51的所有指令均不超过3个字节,且多为单字节指令。为了使“乱飞”程序在程序区迅速纳入正轨,应在编程时多用单字节指令,并在关键的地方人为地插入一些单字节指令NOP,或将有效单字节指令重写,称之为指令冗余。需要注意的是,乱飞的PC必须指向程序运行区,并且必须执行到冗余指令才能使PC纳入正确轨道。......
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
8051有5个中断源,即两个外部中断、两个定时/计数器中断和一个串行发送/接收中断。1.外部中断外部中断是由连接到单片机外部引脚信号变化而引起的中断,反映外部某一事件的发生。CPU是在每个机器周期的S5P2检测P 3.2和P 3.3上的信号,如果是有效信号则对定时器控制寄存器TCON中的IE0或IE1置1,建立中断请求标志。表6-1中断源的主要内容及说明......
2023-11-17
程序存储器以程序计数器PC作为地址指针,通过16位地址总线,可寻址的地址空间为64KB,片内/外统一编址。根据单片机的类型及引脚的电平,CPU可从内部也可从外部程序存储器开始执行。而当EA=0时,内部程序存储器被忽略,程序直接从外部程序存储器的0000H开始执行。64KB程序存储器中有一些特殊的单元,在使用时应加以注意。0023H——串行口的中断服务子程序入口地址。......
2023-11-17
1.生产厂商常见的单片机生产厂商有Intel公司、Motorola公司、Philips公司、Atmel公司、Zilog公司、NEC公司、MicroChip公司、ADI公司、Epson公司、NS公司、AMD公司、WinBond公司、Scenix公司、Toshiba公司、Fujitsu公司、Samsung公司等。2.单片机系列常见的单片机系列有Intel公司的MCS-51、MCS-96/98系列,Motorola公司的68HC05、68HC5X、68HC12、68HC16、683XX系列,Philips公司的80C5X系列,Atmel公司的AT89系列,Zilog公司的Z8、Z86系列,ADI公司的MC-6801系列,MicroChip公司的PIC16CX、PIC16FX、PIC17CX、PIC18CX系列,NEC公司的μPD7800系列,Toshiba公司的MB8900、MB90系列等。......
2023-11-17
相关推荐