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

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

STM32与51单片机之间有什么差异呢?两者可以说是一场科技与性能的较量了。在科技飞速发展的今天,微控制器(MCU)已广泛应用于各类电子设备和系统中,发挥着举足轻重的作用。其中,STM32和51单片机作为两种常见的微控制...

关键字: STM32 51单片机 MCU

51单片机将是下述内容的主要介绍对象,通过这篇文章,小编希望大家可以对51单片机的相关情况以及信息有所认识和了解,详细内容如下。

关键字: 单片机 51单片机

在嵌入式系统开发中,单片机是不可或缺的重要组成部分。其中,STM32单片机和51单片机是两种常见的单片机芯片。本文将对比分析这两种单片机的区别,并探讨STM32单片机的优势。

关键字: stm32单片 51单片机

51单片机是指由美国INTEL公司生产的一系列单片机的总称,这一系列单片机包括了许多品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基...

关键字: 51单片机 串行通信

51单片机是一种常见的微控制器,它具有串行通信接口(Serial Communication Interface,SCI)。通过串口通信接口,51单片机可以与其他设备或系统进行串行通信,实现数据传输和控制。

关键字: 51单片机 串口通信

Pic单片机和51单片机是两种应用广泛的微控制器,它们各自具有不同的特点和优势,选择哪种单片机取决于具体应用需求。下面将对Pic单片机和51单片机进行详细的介绍和对比。

关键字: PIC单片机 51单片机 单片机

随着电子信息技术的快速发展,串行通信在各种应用中得到了广泛的应用。其中,51单片机作为一种常见的嵌入式系统,具有低功耗、高性能、易于编程等特点,常用于各种自动化控制、数据采集等系统中。而PC机具有强大的数据处理能力和丰富...

关键字: 51单片机 PC机 串行通信

51 单片机内部有一个全双工串行接口。什么叫全双工串口呢?一般来说,只能接受或只能发送的称为单工串行;既可接收又可发送,但不能同时进行的称为半双工;能同时接收和发送的串行口称为全双工串行口。

关键字: 51单片机 串口通信 半双工

步进电机是一种无刷电机,可将电脉冲转换为机械旋转。顾名思义,它根据输入脉冲逐步旋转,是现代数字程序控制系统中的主要执行元件。

关键字: 51单片机 步进电机 无刷电机

1.ROM:只读存储器,单片机的只读存储区大多用于存储程序固又称程序存储器。

关键字: 51单片机 工作原理 电路
关闭
关闭