当前位置:首页 > 单片机 > 单片机
[导读]当你编写完一个程序后,通过软件调试,你可以看到程序的指令集,从指令集你就能知道单片机内部是如何工作的,比如数据存取的寄存器与地址,下面是网上找的一篇指令集,讲的蛮好的。一、数据传送类指令(7种助记符)M

当你编写完一个程序后,通过软件调试,你可以看到程序的指令集,从指令集你就能知道单片机内部是如何工作的,比如数据存取的寄存器与地址,下面是网上找的一篇指令集,讲的蛮好的。

一、数据传送类指令(7种助记符)
MOV(英文为Move):对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送;
MOVC(MoveCode)读取程序存储器数据表格的数据传送;
MOVX (MoveExternalRAM) 对外部RAM的数据传送;
XCH (Exchange) 字节交换;
XCHD (Exchangelow-orderDigit) 低半字节交换;
PUSH (PushontoStack) 入栈;
POP (PopfromStack) 出栈;

二、算术运算类指令(8种助记符)
ADD(Addition)加法;
ADDC(AddwithCarry)带进位加法;
SUBB(SubtractwithBorrow)带借位减法;
DA(DecimalAdjust)十进制调整;
INC(Increment)加1;
DEC(Decrement)减1;
MUL(Multiplication、Multiply)乘法;
DIV(Division、Divide)除法;

三、逻辑运算类指令(10种助记符)
ANL(ANDLogic)逻辑与;
ORL(ORLogic)逻辑或;
XRL(Exclusive-ORLogic)逻辑异或;
CLR(Clear)清零;
CPL(Complement)取反;
RL(Rotateleft)循环左移;
RLC(RotateLeftthroughttheCarryflag)带进位循环左移;
RR(RotateRight)循环右移;
RRC (RotateRightthroughttheCarryflag)带进位循环右移;
SWAP(Swap) 低4位与高4位交换;

四、控制转移类指令(17种助记符)
ACALL(AbsolutesubroutineCall)子程序绝对调用;
LCALL(LongsubroutineCall)子程序长调用;
RET(Returnfromsubroutine)子程序返回;
RETI(ReturnfromInterruption)中断返回;
SJMP(ShortJump)短转移;
AJMP(AbsoluteJump)绝对转移;
LJMP(LongJump)长转移;
CJNE(CompareJumpifNotEqual)比较不相等则转移;
DJNZ(DecrementJumpifNotZero)减1后不为0则转移;
JZ(JumpifZero)结果为0则转移;
JNZ(JumpifNotZero)结果不为0则转移;
JC(JumpiftheCarryflagisset)有进位则转移;
JNC(JumpifNotCarry)无进位则转移;
JB(JumpiftheBitisset)位为1则转移;
JNB(JumpiftheBitisNotset)位为0则转移;
JBC(JumpiftheBitissetandClearthebit)位为1则转移,并清除该位;
NOP(NoOperation) 空操作;

五、位操作指令(1种助记符)
CLR位清零;
SETB(SetBit) 位置1。


8种常用伪指令
1.ORG16位地址;
此指令用在原程序或数据块的开始,指明此语句后面目标程序或数据块存放的起始地址。
2.[标号:]DB字节数据项表;
将项表中的字节数据存放到从标号开始的连续字节单元中。例如:SEG:DB88H,100,“7”,“C”
3.[标号:]DW双字节数据项表;
定义16位地址表,16地址按低位地址存低位字节,高位地址存高位字节。
例如:TAB:DW1234H,7BH
4.名字EQU表达式或名字=表达式;
用与给一个表达式赋值或给字符串起名字。之后名字可用做程序地址,数据地址或立即数地址使用。名字必须是一字母开头的字母数字串。
例如:COUNT=10或SPACEEQU10H
5.名字DATA直接字节地址;
给8位内部RAM单元起个名字,名字必须是一字母开头的字母数字串。同一单元可起多个名字。
例如:ERRORDATA80H
6.名字XDATA直接字节地址;
给8位外部RAM起个名字,名字规定同DATA伪指令。
例如:IO_PORTXDATA0CF04H
7.名字BIT位指令;
给一可位寻址的位单元起个名字,规定同DATA伪指令。
例如:SWTBIT30H
8.[标号:] END;
指出源程序到此结束,汇编对其后的程序语句不予理睬。源程序只在主程序最后使用一个END。


1.数据传送指令(30条)
MOVA,Rn寄存器送A11E8--EF
MOVA,data直接字节送A21E5
MOVA,@Ri间接RAM送A11E6--E7
MOVA,#data立接数送A2174
MOVRn,AA送寄存器11F8--FF
MOVRn,data直接数送寄存器22A8--AF
MOVRn,#data立即数送寄存器2178--7F
MOVdata,AA送直接字节21F5
MOVdata,Rn寄存器送直接字节2188—8F
MOVdata,data直接字节送直接字节3285
MOVdata,@Ri间接Rn送直接字节2286;87
MOVdata,#data立即数送直接字节3275
MOV@Ri,AA送间接Rn12F6;F7
MOV@Ri,data直接字节送间接Rn11A6;A7
MOV@Ri,#data立即数送间接Rn2276;77
MOVDPTR,#data1616位常数送数据指针3190
MOVC,bit直接位送进位位21A2
MOVbit,C进位位送直接位2292
MOVCA,@A+DPTRA+DPTR寻址程序存贮字节送A3293
MOVCA,@A+PCA+PC寻址程序存贮字节送A1283
MOVXA,@Ri外部数据送A(8位地址)12E2;E3
MOVXA,@DPTR外部数据送A(16位地址)12E0
MOVX@Ri,AA送外部数据(8位地址)12F2;F3
MOVX@DPTR,AA送外部数据(16位地址)12F0
PUSHdata直接字节进栈道,SP加122C0
POPdata直接字节出栈,SP减122D0
XCHA,Rn寄存器与A交换11C8—CF
XCHA,data直接字节与A交换21C5
XCHA,@Ri间接Rn与A交换11C6;C7
XCHDA,@Ri间接Rn与A低半字节交换11D6;D7
2.逻辑运算指令(35条)
ANLA,Rn寄存器与到A1158—5F
ANLA,data直接字节与到A2155
ANLA,@Ri间接RAM与到A1156;57
ANLA,#data立即数与到A2154
ANLdata,AA与到直接字节2152
ANLdata,#data立即数与到直接字节3253
ANLC,bit直接位与到进位位2282
ANLC,/bit直接位的反码与到进位位22B0
ORLA,Rn寄存器或到A1148—4F
ORLA,data直接字节或到A2145
ORLA,@Ri间接RAM或到A1146;47
ORLA,#data立即数或到A2144
ORLdata,AA或到直接字节2142
ORLdata,#data立即数或到直接字节3243
ORLC,bit直接位或到进位位2272
ORLC,/bit直接位的反码或到进位位22A0
XRLA,Rn寄存器异或到A1168—6F
XRLA,data直接字节异或到A2165
XRLA,@Ri间接RAM异或到A1166;67
XRLA,#data立即数异或到A2164
XRLdata,AA异或到直接字节2162
XRLdata,#data立即数异或到直接字节3263
SETBC进位位置111D3
SETBbit直接位置121D2
CLRAA清011E4
CLRC进位位清011C3
CLRbit直接位清021C2
CPLAA求反码11F4
CPLC进位位取反11B3
CPLbit直接位取反21B2
RLAA循环左移一位1123
RLCAA带进位左移一位1133
RRAA右移一位1103
RRCAA带进位右移一位1113
SWAPAA半字节交换11C4
3.算术运算指令(24条)
ADDA,Rn寄存器加到A1128—2F
ADDA,data直接字节加到A2125
ADDA,@Ri间接RAM加到A1126;27
ADDA,#data立即数加到A2124
ADDCA,Rn寄存器带进位加到A1138—3F
ADDCA,data直接字节带进位加到A2135
ADDCA,@Ri间接RAM带进位加到A1136;37
ADDCA,#data立即数带进位加到A2134
SUBBA,Rn从A中减去寄存器和进位1198—9F
SUBBA,data从A中减去直接字节和进位2195
SUBBA,@Ri从A中减去间接RAM和进位1196;97
SUBBA,#data从A中减去立即数和进位2194
INCAA加11104
INCRn寄存器加11108—0F
INCdata直接字节加12105
INC@Ri间接RAM加11106;07
INCDPTR数据指针加112A3
DECAA减11114
DECRn寄存器减11118—1F
DECdata直接字节减12115
DEC@Ri间接RAM减11116;17
MULABA乘B14A4
DIVABA被B除1484
DAAA十进制调整11D4
4.转移指令(22条)
AJMPaddr11绝对转移22*1
LJMPaddr16长转移3202
SJMPrel短转移2280
JMP@A+DPTR相对于DPTR间接转移1273
JZrel若A=0则转移2260
JNZrel若A≠0则转移2270
JCrel若C=1则转移2240
JNCrel若C≠1则转移2250
JBbit,rel若直接位=1则转移3220
JNBbit,rel若直接位=0则转移3230
JBCbit,rel若直接位=1则转移且清除3210
CJNEA,data,rel直接数与A比较,不等转移32B5
CJNEA,#data,rel立即数与A比较,不等转移32B4
CJNE@Ri,#data,rel立即数与间接RAM比较,不等转移32B6;B7
CJNERn,#data,rel立即数与寄存器比较不等转移32B8—BF
DJNZRn,rel寄存器减1不为0转移22D8—DF
DJNZdata,rel直接字节减1不为0转移32D5
ACALLaddr11绝对子程序调用22*1
LCALLaddr16子程序调用3212
RET子程序调用返回1222
RETI中断程序调用返回1232
NOP空操作1100

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭