MCS-51单片机的算术运算类指令包括加、减、乘、除、加1、减1等指令。这类指令有ADD、ADDC、INC、SUBB、DEC、DA、MUL、DIV共8种。表3-3算术运算类指令注:√表示该指令影响某一标志位。运算结果对PSW的影响同上述4条ADD指令。6.十进制调整指令十进制调整指令只有以下1条:该指令用于BCD码加法运算时,对BCD码的加法运算结果自动进行调整,但对BCD码的减法运算不能用此指令来调整。在运算过程中,单片机按二进制规则进行运算。......
2025-09-30
MCS-51的所有指令均不超过3个字节,且多为单字节指令。指令由操作码和操作数两部分组成,操作码指明CPU完成什么样的操作(如传送、算术运算、转移等),操作数是操作码的操作对象(如立即数、寄存器、存储器等)。单字节指令只有操作码,隐含操作数;双字节指令第一个字节是操作码,第二个字节是操作数;3字节指令第一个字节为操作码,后两个字节为操作数。CPU取指令的过程是先取操作码,后取操作数。某个数据是操作码还是操作数完全由取指令顺序决定。CPU复位后,首先取指令的操作码,尔后顺序取出操作数。当一条完整指令执行完后,紧接着取下条指令的操作码和操作数,这些操作时序完全由程序计数器PC控制。因此,一旦PC因干扰而出现错误,程序便脱离正常运行轨道“乱飞”,出现操作数数值改变以及将操作数当做操作码的错误。当程序“乱飞”到某个单字节指令上时,便自己自动纳入正轨;当“乱飞”到某个双字节指令上时,若恰恰在取指令时刻落到其操作数上,就会将操作数当做操作码,程序仍将出错;当程序“乱飞”到某个三字节指令上时,因为它们有两个操作数,误将操作数当做操作码的出错概率更大。
为了使“乱飞”程序在程序区迅速纳入正轨,应在编程时多用单字节指令,并在关键的地方人为地插入一些单字节指令NOP,或将有效单字节指令重写,称之为指令冗余。
1.NOP的使用
可在双字节指令和三字节指令之后插入两个单字节NOP指令,以保证其后的指令不被拆散。因为“乱飞”的程序即使落到操作数上,由于两个空操作指令NOP的存在,不会将其后的指令当做操作数执行,从而使程序纳入正轨。
对程序流向起决定作用的指令(如RET、ACALL、LJMP、JZ等)和某些对系统工作状态起重要作用的指令(如SETB EA等)之前插入两条NOP指令,可保证乱飞程序迅速纳入轨道,确保这些指令正确执行。(https://www.chuimin.cn)
2.重要指令冗余
对程序流向起决定作用的指令(如RET、ACALL、LJMP、JZ等)和某些对系统工作状态起重要作用的指令(如SETB EA等)的后面,可重复写上这些指令,以确保这些指令正确执行。
需要注意的是,乱飞的PC必须指向程序运行区,并且必须执行到冗余指令才能使PC纳入正确轨道。
相关文章
MCS-51单片机的算术运算类指令包括加、减、乘、除、加1、减1等指令。这类指令有ADD、ADDC、INC、SUBB、DEC、DA、MUL、DIV共8种。表3-3算术运算类指令注:√表示该指令影响某一标志位。运算结果对PSW的影响同上述4条ADD指令。6.十进制调整指令十进制调整指令只有以下1条:该指令用于BCD码加法运算时,对BCD码的加法运算结果自动进行调整,但对BCD码的减法运算不能用此指令来调整。在运算过程中,单片机按二进制规则进行运算。......
2025-09-30
2)数据传送指令,加1、减1指令,逻辑运算指令不影响CY、OV和AC位。标志位的状态是控制转移类指令的判断条件。数据传送类指令是使用最频繁的指令,主要用于数据的复制、保存及交换。数据传送类指令的助记符有MOV、MOVX、MOVC、XCH、XCHD、SWAP、PUSH、POP。其通用数据传送类指令格式为MOV 目的操作数,源操作数表3-2数据传送类指令注:√表示该指令影响某一标志位。外部RAM或I/O口之间的数据传送指令共有4条。......
2025-09-30
条件转移指令共有8条。1.累加器判零转移指令累加器判零转移指令共有两条:这组指令的功能是对累加器的内容为“0”和不为“0”进行检测并转移。当各自的条件满足时,程序转向指定的目标地址。目标地址的计算与SJMP指令情况相同。指令执行时对标志位无影响。例如,已知累加器=00H,执行指令:2.数值比较转移指令数值比较转移指令共有4条。利用这两条指令可实现循环控制,循环次数存放于寄存器中或直接寻址单元中。......
2025-09-30
MCS-51单片机逻辑运算及移位类指令包括与、或、异或、清0、取反、移位等操作指令。1.逻辑“与”运算指令逻辑“与”运算指令共有以下6条:这组指令中的前4条指令完成源操作数与累加器的内容相与,并将结果送入累加器中。其寻址方式、标志位影响、端口操作与ANL指令相同。表3-4逻辑运算及移位类指令注:√表示该指令影响某一标志位。......
2025-09-30
1.操作数类型在众多指令中,大多数指令执行时都需要使用操作数,因此就存在怎样寻找操作数的问题。单片机指令系统中的操作数的类型有立即数、寄存器操作数和存储器操作数3种。通常在指令中给出寄存器的名称。存储器操作数存储器操作数是把操作数存放在存储器中,因此在汇编指令中给出的是存储器的地址。2.指令描述约定为便于学习寻址方式和指令,在此先对指令中使用到的一些符号的约定予以说明。用于SJMP和所有条件转移指令。......
2025-09-30
无条件转移指令共有以下4条:1.LJMP addr16LJMP addr16指令是3个字节指令,其机器码为02H,addr15~8,addr7~0。3.SJMP relSJMP rel指令是相对寻址方式转移指令,其中rel为偏移量,偏移量rel是一个带符号的8位二进制补码数。因此,有时也称其为散转指令。4条无条件转移指令的功能相同,不同之处在于转移的范围。其中长转移指令LJMP的转移范围最大,为64KB。短转移指令SJMP的转移范围最小,仅为256字节。......
2025-09-30
选用单片机时,一般按照生产厂商的数据手册、用户手册和应用注释手册选取。1.单片机的主要特征通过阅读手册了解单片机的主要特征,有助于正确选择单片机。2.单片机的封装通过阅读手册了解单片机的封装形式及详细尺寸。3)动态电参数是单片机的控制引脚信号变化的时序、延迟时间、电平、脉冲宽度,为硬件设计时与其他芯片的信号相匹配提供依据。......
2025-09-30
1.基本组成微型计算机的基本组成如图1-2所示。图1-2微型计算机的组成框图中央处理器CPUCPU是计算机的核心部件,它由运算器和控制器组成,完成计算机的运算和控制功能。电池式NVRAM是由CMOS的SRAM、备用电池和切换电路组成,在电源断开或低于某值时切换电路把备用电池接入,对RAM进行写保护,防止意外数据写入和信息丢失。......
2025-09-30
相关推荐