您的位置 首页 主动

51汇编语言指令集

符号定义表符号含义RnR0~R7寄存器n=0~7Direct直接地址,内部数据区的地址RAM(00H~7FH)SFR(80H~FFH)B,ACC,PSW,IP,P3,IE

符号界说表

符号 意义
Rn R0~R7寄存器n=0~7
Direct 直接地址,内部数据区的地址RAM(00H~7FH)
SFR (80H~FFH) B,ACC,PSW,IP,P3,IE,P2,SCON,P1,TCON,P0
@Ri 直接地址Ri=R0或R1 8051/31RAM地址(00H~7FH) 8052/32RAM地址(00H~FFH)
#data 8位常数
#data16 16位常数
Addr1616位的方针地址
Addr11 11位的方针地址
Rel 相关地址
bit 内部数据RAM(20H~2FH),特别功用寄存器的直接地址的位

指令介绍

指令字节周期动作阐明

数据搬运指令
50.MOV A,Rn11将寄存器的内容载入累加器
51.MOV A,direct 21将直接地址的内容载入累加器
52.MOV A,@Ri 11将直接地址的内容载入累加器
53.MOV A,#data21将常数载入累加器
54.MOV Rn,A 11将累加器的内容载入寄存器
55.MOV Rn,direct 22将直接地址的内容载入寄存器
56.MOV Rn,gdata 21将常数载入寄存器
57.MOV direct,A21将累加器的内容存入直接地址
58.MOV direct,Rn22将寄存器的内容存入直接地址
59.MOV direct1, direct2 32将直接地址2的内容存入直接地址1
60.MOV direct,@Ri 22将直接地址的内容存入直接地址
61.MOV direct,#data32将常数存入直接地址
62.MOV @Ri,A 11将累加器的内容存入某直接地址
63.MOV @Ri,direct 22将直接地址的内容存入某直接地址
64.MOV @Ri,#data 21将常数存入某直接地址
65.MOV DPTR,#data16 32将16位的常数存入数据指针寄存器
66.MOVC A,@A+DPTR 12(A) ←((A)+(DPTR))累加器的值再加数据指针寄存器的值为其所指定地址,将该地址的内容读入累加器
67.MOVC A,@A+PC 12(PC)←(PC)+1;(A)←((A)+(PC))累加器的值加程序计数器的值作为其所指定地址,将该地址的内容读入累加器
68.MOVX A,@Ri 12将直接地址所指定外部存储器的内容读入累加器(8位地址)
69.MOVX A,@DPTR 12将数据指针所指定外部存储器的内容读入累加器(16位地址)
70.MOVX @Ri,A 12将累加器的内容写入直接地址所指定的外部存储器(8位地址)
71.MOVX @DPTR,A 12将累加器的内容写入数据指针所指定的外部存储器(16位地址)
72.PUSH direct 22将直接地址的内容压入仓库区
73.POP direct 22从仓库弹出该直接地址的内容
74.XCH A,Rn 11将累加器的内容与寄存器的内容交流
75.XCH A,direct 21将累加器的值与直接地址的内容交流
76.XCH A,@Ri 11将累加器的值与直接地址的内容交流
77.XCHD A,@Ri 11将累加器的低4位与直接地址的低4位交流


管用运算指令
1.ADD A,Rn 11将累加器与寄存器的内容相加,成果存回累加器
2.ADD A,direct 21将累加器与直接地址的内容相加,成果存回累加器
3.ADD A,@Ri 11将累加器与直接地址的内容相加,成果存回累加器
4.ADD A,#data21将累加器与常数相加,成果存回累加器
5.ADDC A,Rn 11将累加器与寄存器的内容及进位C相加,成果存回累加器
6.ADDC A,direct 21将累加器与直接地址的内容及进位C相加,成果存回累加器
7.ADDC A,@Ri 11将累加器与直接地址的内容及进位C相加,成果存回累加器
8.ADDC A,#data 21将累加器与常数及进位C相加,成果存回累加器
9.SUBB A,Rn 11将累加器的值减去寄存器的值减借位C,成果存回累加器
10.SUBB A,direct 21将累加器的值减直接地址的值减借位C,成果存回累加器
11.SUBB A,@Ri 11将累加器的值减直接地址的值减借位C,成果存回累加器
12.SUBB A,#data 21将累加器的值减常数值减借位C,成果存回累加器
13.INC A 11将累加器的值加1
14.INC Rn 11将寄存器的值加l
15.INC direct 21将直接地址的内容加1
16.INC @Ri 11将直接地址的内容加1
17.INC DPTR11数据指针寄存器值加1
阐明:将16位的DPTR加1,当DPTR的低字节(DPL)从FFH溢出至00H时,会使高字节(DPH)加1,不影响任何标志位
18.DEC A 11将累加器的值减1
19.DEC Rn 11将寄存器的值减1
20.DEC direct 21将直接地址的内容减1
21.DEC @Ri 11将直接地址的内容减1
22.MUL AB 14将累加器的值与B寄存器的值相乘,乘积的低位字节存回累加器,高位字节存回B寄存器
阐明:将累加器A和寄存器B内的无符号整数相乘,发生16位的积,低位字节存入A,高位字节存入B寄存器。假如积大于FFH,则溢出标志位(OV)被设定为1,而进位标志位为0
23.DIV AB 14将累加器的值除以B寄存器的值,成果的商存回累加器,余数存回B寄存器
阐明:无符号的除法运算,将累加器A除以B寄存器的值,商存入A,余数存入B。履行本指令后,进位位(C)及溢出位(OV)被铲除为0
24.DA A 11将累加器A作十进制调整,
若(A) 3-0>9或(AC)=1,则(A) 3-0←(A)3-0+6
若(A) 7-4>9或 (C)=1,则(A) 7-4←(A)7-4+6

逻辑运算指令
25.ANL A,Rn 11将累加器的值与寄存器的值做AND的逻辑判别,成果存回累加器
26.ANL A,direct21将累加器的值与直接地址的内容做AND的逻辑判别,成果存回累加器
27.ANL A,@Ri 11将累加器的值与直接地址的内容做AND的逻辑判别,成果存回累加器
28.ANL A,#data 21将累加器的值与常数做AND的逻辑判别,成果存回累加器
29.ANL direct,A 21将直接地址的内容与累加器的值做AND的逻辑判别,成果存回该直接地址
30.ANL direct,#data 32将直接地址的内容与常数值做AND的逻辑判别,成果存回该直接地址
31.ORL A,Rn11将累加器的值与寄存器的值做OR的逻辑判别,成果存回累加器
32.ORL A,direct 21将累加器的值与直接地址的内容做OR的逻辑判别,成果存回累加器
33.ORL A,@Ri 11将累加器的值与直接地址的内容做OR的逻辑判别,成果存回累加器
34.ORL A,#data 21将累加器的值与常数做OR的逻辑判别,成果存回累加器
35.ORL direct,A 21将直接地址的内容与累加器的值做OR的逻辑判别,成果存回该直接地址
36.ORL direct,#data 32将直接地址的内容与常数值做OR的逻辑判别,成果存回该直接地址
37.XRL A,Rn 11将累加器的值与寄存器的值做XOR的逻辑判别,成果存回累加器
38.XRL A,direct 21将累加器的值与直接地址的内容做XOR的逻辑判别,成果存回累加器
39.XRL A,@Ri 11将累加器的值与直接地扯的内容做XOR的逻辑判别,成果存回累加器
40.XRL A,#data 21将累加器的值与常数作XOR的逻辑判别,成果存回累加器
41.XRL direct,A 21将直接地址的内容与累加器的值做XOR的逻辑判别,成果存回该直接地址
42.XRL direct,#data 32将直接地址的内容与常数的值做XOR的逻辑判别,成果存回该直接地址
43.CLR A 11铲除累加器的值为0
44.CPL A 11将累加器的值反相
45.RL A 11将累加器的值左移一位
46.RLC A 11将累加器含进位C左移一位
47.RR A 11将累加器的值右移一位
48.RRC A 11将累加器含进位C右移一位
49.SWAP A 11将累加器的高4位与低4位的内容交流。(A)3-0←(A)7-4

布尔代数运算
78.CLR C 11铲除进位C为0
79.CLR bit 21铲除直接地址的某位为0
80.SETB C 11设定进位C为1
81.SETB bit 21设定直接地址的某位为1
82.CPL C 11将进位C的值反相
83.CPL bit 21将直接地址的某位值反相
84.ANL C,bit 22将进位C与直接地址的某位做AND的逻辑判别,成果存回进位C
85.ANL C,/bit 22将进位C与直接地址的某位的反相值做AND的逻辑判别,成果存回进位C
86.ORL C,bit22将进位C与直接地址的某位做OR的逻辑判别,成果存回进位C
87.ORL C,/bit 22将进位C与直接地址的某位的反相值做OR的逻辑判别,成果存回进位C
88.MOV C,bit21将直接地址的某位值存入进位C
89.MOV bit,C 22将进位C的值存入直接地址的某位
90.JC rel 22若进位C=1则跳至rel的相关地址
91.JNC rel 22若进位C=0则跳至rel的相关地址
92.JB bit,rel32若直接地址的某位为1,则跳至rel的相关地址
93.JNB bit,rel 32若直接地址的某位为0,则跳至rel的相关地址
94.JBC bit,rel 32若直接地址的某位为1,则跳至rel的相关地址,并将该位值铲除为0

程序跳动
95.ACALL addr11 22调用2K程序存储器范围内的子程序
96.LCALL addr1632调用64K程序存储器范围内的子程序
97.RET 12从子程序回来
98.RETI 12从中止子程序回来
99.AJMP addr11 22肯定跳动(2K内)
100.LJMP addr1632长跳动(64K内)
101.SJMP rel 22短跳动(2K内)-128~+127字节
102.JMP @A+DPTR 12跳至累加器的内容加数据指针所指的相关地址
103.JZ rel 22累加器的内容为0,则跳至rel所指相关地址
104.JNZ rel22累加器的内容不为0,则跳至rel所指相关地址
105.CJNE A,direct,rel 32将累加器的内容与直接地址的内容比较,不持平则跳至rel所指的相关地址
106.CJNE A,#data,rel32将累加器的内容与常数比较,若不持平则跳至rel所指的相关地址
107.CJNE @Rn,#data,rel32将寄存器的内容与常数比较,若不持平则跳至rel所指的相关地址
108.CJNE @Ri,#data,rel 32将直接地址的内容与常数比较,若不持平则跳至rel所指的相关地址
109.DJNZ Rn,rel 22将寄存器的内容减1,不等于0则跳至rel所指的相关地址
110.DJNZ direct,rel 32将直接地址的内容减1,不等于0则跳至rel所指的相关地址
111.NOP 11无动作


把握常用的汇编语言伪指令及其使用
1、汇编开始伪指令ORG
格局 :[标号:]ORG 16位地址
例 : ORG 0050H
MAIN: MOV SP,#50H
———–
2、汇编完毕伪指令END
格局 :[标号:]END [表达式]

3、字节数据界说伪指令DB
格局 :[标号:]DB D1,D2,…..
例 : DB “How are you!”
DB -2,-4,-6,8,10,18

4、字界说伪指令DW
格局 :[标号:]DW 16位数据表
例 : ORG 1000H
WORD: DW 324AH,3CH
汇编后 :(1000H)=32H,(1001H)=4AH
(1002H)=00H,(1003H)=3CH

5、空间界说伪指令DS
ORG 3000H
BUF: DS 50
…………
6、赋值伪指令EQU
格局 :符号名EQU表达式
COOLER EQU P1.0
HEATER EQU P1.2
VALUE EQU 40H
……..
SETB COOLER
CLR HEATER
MOV VALUE,A
7、位地址符号界说伪指令BIT
QIDONG BIT P1.0
FLAG BIT 20H
格局:字符称号BIT位地址
功用:将位地址赋予所规则的字符称号

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/zhudong/261487.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部