指令程序表

件: 病毒或恶意软件可能干扰设备的连接或设置。运行防病毒软件扫描以检测并删除任何恶意程序。不兼容的软件: 某些软件与信捷触摸屏设备不兼容。确保您使用的是与设备兼容的软件。如果您已尝试所有上述解决方案但仍然无法连接到设备或更改设置,请联系信捷技术支持以获得帮助。 指令程序表

传送指令是指令系统中最基本,使用最多的一类指令,主要用于数据的传送、保存以及交换等场合。 1.以累加器A为目的操作数的指令(4条)这组指令的功能是把源操作数指定的内容送入累加器A中。 有寄存器、直接、寄存器间接和立即4种寻址方式。 MOVA, Rn MOVA, data MOVA,@Rn MOVA,#data 2.以寄存器Rn为目的的操作数的指令(3条) 这组指令的功能是把源操作数指定的内容送到所选定的工作寄存器Rn中。 有寄存器、直接和立即3种寻址方式。 MOVRn, A MOVRn,data MOVRn,#data3.以直接地址为目的操作数的指令(5条) 这组指令的功能是把源操作数指定的内容送到由直接地址data所指定的片内RAM中。 有寄存器、直接、寄存器间接和立即4种寻址方式。 MOV data,A MOV data,Rn MOV data1,data2 MOV data,@Ri MOV data,#data4.以间接地址为目的操作数的指令(3条) 这组指令的功能是把源操作数指定的内容送到以Ri中的内容为地址的片内RAM中。 有寄存器、直接和立即3种寻址方式。 MOV @Ri,A MOV @Ri,data MOV @Ri,#data5.查表指令(2条) 这组指令的功能是对存放于程序存储器中的数据表格进行查找传送。 使用变址寻址方式。 MOVCA,@A+DPTR MOVCA, @A+PC 6.累加器A与片外AM传送指令(4条) 这组指令的功能为累加器A与片RAM间的相互传送。 由于MCS-51指令系统中没有专门的输入/输出指令,且片外扩展的I/O口与片外RAM是统一编址的,故以下4条指令也可作为输入/输出指令。 使用寄存器间接寻址方式。 MOVXA,@DPAR MOVX@DPTR,A MOVXA,@Ri MOVX@Ri,A 7.堆栈操作类指令(2条) 该类指令的功能是把直接寻址单元的内容传送到堆栈指针SP所指的单元中,以及把SP所指单元的内容送到直接寻址单元中。 PUSH data POPdata 前一条指令称为入栈操作指令,后一条指令称为出栈指令。 由于开机复位后,(SP)=07H,故一般需重新设置SP的初值。 由于压入堆栈的第一个数必须存放在SP+1所指存储单元,故实际的栈底为SP+1所指存储单元。 8.交换指令(4条) 该类指令的功能是把累加器A中的内容与源操作数所指出的数据相互交换。 有寄存器、直接和寄存器间接3种寻址方式。 XCHA,Rn XCHA,data XCHA,@Ri XCHD A,@Ri 9.16位数据传送类指令(1条) MOVDPTR,#data该指令的功能是把16位常数送入数据指针寄存器,使用立即寻址方式。 译成机器码时,是高位字节在前,低位字节在后。 MCS-51具有强大的加、减、乘、除四则算术运算指令。 1.程序状态字PSWMCS-51有一个程序状态字寄存器PSW,用来保存指令执行结果的标志,供程序查讯和判别。 PSW是特殊功能寄存器中的一个,其格式如下:PSW7--既是布尔处理机的累加器C,又是进位标志CY,如果操作结果在最高位有进位输出(加法时)或借位输入(减法时),置位CY,否则清“0”CY。 AC--辅助进位(半进位)标志。 如果操作结果的低4位有进位(加法时)或向高4位借位时(减法),置AC,否则清“0”AC,AC主要用于二-十进制数加法调整。 OV--溢出标志。 如果操作结果有进位进入最高位,但最高位没有产生进位,或者最高位产生进位而低位没有向最高位进位,这时置位溢出标志位,否则OV清“0”。 溢出标志位用于补码运算,当有符号的数运算结果不能用8位二进制数表示时,OV将置位。 P--累加器A的奇偶标志位,如果累加器A的8位的模2和为1(奇),则P=1;否则P=0。 由于P总是表示A的奇偶性,随着A的内容变化的,所以一个值写入PSW的P位的值不变。 RS1、RS0--指示当前使用的工作寄存器区。 F0--用户标志位。 可作为软件标志,它的作用和内部RAM位寻址区的各位相似。 PSW1--保留位,对它的操作无效。 2.加法指令 1、不带进位加法指令 ADD A,#data ADD A,data ADD A,@Ri ADD A,Rn 工作寄存器、内部RAM单元内容或立即数的8位无符号二进制数和累加器A中数相加,所得和存放于累加器A中,当和的第3、7位有进位时,分别将AC,CY标志位置1;否则为0。 上述指令的执行将影响标志位AC、CY、OV、P。 对于无符号数,进位标志位CY=1,表示溢出;CY=0表示无溢出。 带符号数运算的溢出取决于第6、7位中有一位产生进位,而另一位不产生进位,溢出标志位OV置“1”否则被清“0”。 OV=1表示两个正数相加,和变为负数,或两个负数相加,和变为正数的错误结果。 源操作数有四种寻址方式:寄存器、直接、间接和立即数。 2、带进位加法指令: ADDC A,#data ADDCA,data ADDC A,@Ri ADDCA,Rn 这是四条带进位的加法指令。 将累加器A内容加当前CY标志位内容,再加无符号单字节的数,和存于累加器A中。 当运算结果第3、7位产生进位溢出时,则分别置位AC、CY和OV标志位。 本指令执行将影响标志位AC、CY、OV、P。 本指令常用于多字节加法。 3、加1指令: INC A INCdata INC @Ri INC Rn INC DPTRINC指令将指定的内容加1,结果仍存放于原A或原单元中。 如原值为0FFH,加1运算后将变成00H,运算结果不影响标志位。 本指令可对累加器A、工作寄存器RN、RI间址和直接寻址的单元内容进行加1运算。 可见MCS-51加1指令是较丰富的。 注意:当用本指令使输出并行I/O内容加1时,用作输出口原始值,将从输出口的数据锁存器中读入,而不是从输出口的引脚上读入。 4、二-十进制调正指令: DA A若[(A0-3)>9]或[(AC)=1),则(A0-3)(A0-3)+06H本指令是对A的BCD码加法结果进行调正。 两个压缩型BCD码按二进制数相加之后,必须经本指令调正,才能得到压缩型BCD码的和数。 本指令的操作为:若累加器A的低4位数值大于9或者第3位向第4位产生进位,即AC辅助进位位为1,则需将A的低4位内容加6调正,以产生低4位正确的BCD码值。 如果加0调正后,低4位产生进位,且高4位均为1时,则内部加法将置位CY,反之,它并不清“0”CY标志位。 若累加器A的高4位值大于9或最高进位位CY=1,则高位4位需加6调正,以产生高4位的正确BCD码值。 同样,在加6调正后产生最高进位,则置位CY,反之,不清“0”CY这时CY的置位,表示和数BCD码值大于等于100。 这对多字节十进制加法有用。 不影响OV标志。 由此可见,本指令是根据累加器A的原始数值和PSW的状态,对累加器A进行加O6H、60H或66H的操作。 必须注意:本指令不能简单地把累加器A中的16进制数交换成BCD码,也不能用于十进制减法的调正。 3.减法指令MCS-51在MCS-48的基础上增加了带借位减法指令,加强了计算机的运算功能。 1、带借位减法指令:SUBBA,#data SUBBA,data SUBBA,@Ri SUBBA,Rn 带借位减法指令SUBB,从累加器A中减去进位标志位CY和指定的变量,结果在累加器A中,若第七位有借位,则置位位CY,否则CY清0。 若第3位有错位,则置位辅助进位标志AC,否则清0 AC。 若第7和第6位中有一位需借位,而另一位不借位,则置位溢出标志OV。 溢出位OV用于带符号的整数减法,它表示(OV=1)一个正数减负数结果为负数;或一个负数减正数结果为正数的错误结果。 源操作数允许有四种寻址方式:寄存器RN,直接地址direct,间址Ri或立即数。 当在进行单字节或多字节减法前,不知道进位标志位CY的值,则应在减法指令前先将CY清“0”。 4.乘法指令MULAB乘法指令是MCS-51新增加的,运算速度只需4个机器周期。 它大大增加了MCS-51单片机的运算功能,克服了MCS-48系列单片机的不足。 本指令将累加器A和寄存器B中二个8位无符号整数进行相乘,16位乘积的低8位存于A中,高8位存于B中,如果乘积大于255(0FFH),即B的内容不为0时,则置位溢出标志位OV,否则清“0”OV。 进位标志位CY总是清“0”。 5.除法指令DIVABMCS-51系列单片机增加的除法指令,运算时间亦只需4个机器周期,同样也增强了MCS-51的运算功能,使它能适用于复杂的且要求运算功能较强的控制系统。 除法指令格式:本指令将累加器A中8位无符号整数除以B寄存器中8位无符号整数,所得结果商的整数部分存于A中,整数作数部分存于寄存器B中。 清“0”CY和OV标志位。 当除数(B中内容)为00H时,则执行结果将为不定值,即执行结果送往A和B中的为不定值,且置位溢出标志位OV。 在任何情况下,均清“0”CY。 6.减一指令DECA DECdata DEC @Ri DECRn DEC指令把所指的寄存器内容减1,结果仍送回原寄存器,若原来寄存器的内容为00H,则减1后将为FFH,运算结果不影响任何标志位,该组指令使用了直接、寄存器和寄存器间寻址。 同加1指令一样,在第二条指令中,若直接地址是I/O口,则进行“读-改-写”操作。 逻辑操作类指令共有效25条,有与、或、异或、求反、左右移位、清0等逻辑操作,对应的寻址方式有直接、寄存器和间接寻址,该类指令的执行一般不影响PSW。 1.循环移位指令(4条)RLA; RRA; RLC A; RRC A; 前两条指令的功能分别是将累加器A的内容循环左移一位,后两条指令的功能分别是将累加器A的内容连同进位位CY一起循环左移或右移一位。 2.累加器半字节交换指令(1条)SWAPA;这条指令的功能是将累加器A的高低两半字节交换。 如(A)=56H,执行指令SWAP A后,结果(A)=65H。 3.求反指令(1条)CPLA;4.清0指令(1条)CLRA;5.逻辑与指令(6条)ANLA,#data; ANL data,#data ANL A,Rn ANL A,data ANLdata,A ANL A,@Ri 这组指令的第二条和第五条指令中,若直接地址正好是I/O口,则也是“读-改-写”操作。 6.逻辑或指令(6条)ORLA,#data ORLdata,#data ORLA,Rn ORLA,data ORLdata,A ORL A,@Ri 这组指令的第二条和第五条也具有“读-改-写”功能。 7.逻辑异或指令(6条)XRLA,#data XRL data,#data XRLA,Rn XRL A,data XRLdata,A XRL A,@Ri 同样,这组指令的第二条和第五条也具有“读-写-改”功能。 控制转移类指令用于控制程序的走向,故其作用区间是程序存储器空间。 利用具有16位地址的长调用、长转移指令可对64K程序存储器的任一地址单元进行访问,也可用具有11位地址的绝对调用和绝对转移指令,访问2K字节的空间。 另外,还有在一页范围的短相对转移以及许多条件转移指令,这类指令一般不影响标志位,不面分别给予介绍。 1.无条件转移语句(4条)LJMP addr16AJMP addr11 SJMP rel JMP@(A)+DPTR 上述指令的功能是当程序执行完该指令时,程序就无条件地转移到指令所提供的地址上去。 第一条指令称为长转移指令,指令提供16位目标地址,将指令中第二字节和第三字节地址码分别装入PC的高8位中,所以无条件转移的目标地址范围是64K字节空间。 第二条指令称为绝对转移指令,指令提供11位目标地址,所以,无条件转移的目标地址范围是从下条指令开始的2K字节空间。 第三条指令称为相对短转移指令,指令控制程序无条件的转向指定地址。 该指令的rel是一个带符号的相对偏移量,范围为-128~+127。 负数表示向后转移,正数表示向前转移。 这条指令的优点是指令给出的是相对转移地址,不具体指出地址值,这样当程序地址发生变化时,只要相对地址不发生变化,该指令就不需作任何改动。 在用汇编语言写程序时,rel是一个标号,由汇编程序在汇编过程中自动计算偏移地址。 在手工汇编时,可用下式计算偏移地址:向后转移时:rel=FEH-(源、目的地址的绝对值)向前转移时:rel=(源、目的地址差的绝对值)-2第四条指令称为散转指令(又称为间接转移指令),该指令把累加器A中的8位无符号数与作为基址寄存器DPTR中的16位数据相加,所得的值送入PC作为转移的目的地址。 该指令执行后不影响累加器A和数据指针DPTR中的原内容,也不影响任何标志位。 这条指令的特点是其转移地址不是编程时确定的,而是在程序运行时动态决定的。 因此,可以在DPTR中装入多条转移程序的首地址,而由累加器A中的内容来动态选择该时刻应转向那一条分支程序。 2.条件转移指令(8条)1.JZrel 2.JNZrel 3.CJNEA,data,rel 4.CJNEA,#data,rel 5. CJNERn,#data,rel 6.CJNE@Ri,data,rel 7.DJNZ Rn,rel 8.DJNZdata,rel 上述指令执行满足某种特定条件的转移,其目标在以下一条指令的起始地址为中心的256个字节范围内(-128~+127)。 第一条和第二条指令是判别累加器A中的内容是否为0来确定是顺序执行还是转移。 第三条至第六条是比较转移指令,该指令通过比较前面两个操作数的大小,如果它们的值不相等则转移,相等则继续执行。 指令执行后要影响进位位CY,若操作数1小于操作数2,则CY=1;若操作数1大于操作数2,则CY=0。 3.调用指程序及返回指令(4条)1.LCALLaddr16 2.ACALLaddr11 3.RET 4.RETI 在程序设计中,经常需要对某段程序反复执行,为了减少程序的编写以及浪费不必要的地址空间,于是引入了主程序和子程序的概念,通常把某一段需要反复调用的程序称为子程序,子程序的最后一条指令为返回主程序指令(RET),而对具有调用子程序功能的指令称为调用指令。 第一条指令称为长调用指令,其与LJMP一样提供16位地址,可调用64K字节范围内的子程序。 由于其为三字节指令,所以执行时首先(PC)+3,以获得下一条指令地址,并把此时的PC内容压入堆栈,作为返回地址,然后把地址addr16装入PC,转去执行子程序。 第二条指令称为绝对调用指令,该指令提供11位目标地址,限制在2K字节范围内调用,由于是双字节指令,所以执行时(PC)+2以获得下一条指令的地址,然后把该地址压入堆栈作为返回地址。 其操作码的形成与AJMP指令相同。 第三条指令称为子程序返回指令,表示子程序结束需返回主程序,所以执行该指令时,分别从堆栈中弹出调用子程序时压入的返回地址。 第四条指令称为中断返回指令,该指令的执行过程类似指令RET,但其还能恢复中断逻辑,RETI和RET决不能互换使用。 4.空操作指令(1条)NOP;空操作指令除了PC加1外,CPC不作任何操作,而转向下一条指令去执行。 这条指令常用于产生一个机器周期的延时。 位操作类指令共有17条,均以位为操作对象,分别完成位传送、位状态控制、位逻辑运算、位条件转移等功能,在汇编语言中,位地址的表示方式有以下4种:直接用位地址表示:如91H。 字节地址位数方式:如P1.0(90H)。 位名称方式:如RS0。 用户使用伪指令事先定义过的符号地址。 1.位数据传送指令(2条)MOVC,bit MOVbit,C 上述指令把源操作数指定的变量传送到目的操作数指定的单元中。 第二条指令若是对I/O口的位进行操作,则也是“读-改-写”操作。 2.位状态控制指令(6条)CLRC CLR bit CPL C CPLbit SETB C SETB bit 上述指令的功能是分别对进位标志和直接寻址进行清0、求反以及直接位地址是I/O口的某一位时,也具有“读-改-写”功能。 3.位逻辑运算指令(4条)ANLC,bit ANLC,/bit ORLC,bit ORLC/bit 上述指令的功能是将位累加器C的内容与直接位地址的内容或直接位地址内容的反进行逻辑与、逻辑或,结果仍送回C中。 4.位条件转移指令(5)JCrel JNCrel JBbit,rel JNBbit,rel JBC bit,rel上述指令的功能分别是判别进位位C和直接位地址的内容是“1”还是“0”,以此来决定程序的走向。 最后一条指令的功能是:若直接位址的内容为“1”则转移,并且同时将该位清0,否则顺序执行。 这条指令若是对I/O口某一位操作,也具有“读-改-写”功能。

本文原创来源:电气TV网,欢迎收藏本网址,收藏不迷路哦!

相关阅读

添加新评论