汇编语言基本指令

资料转移指令 
MOV 移动
MOVC 程式记忆体移动
MOVX 外部RAM和扩展I/O口与累加器A的数据传送指令
PUSH 放入堆叠
POP 由堆叠取回
XCH 8位元交换
XCHD 低4位元交换 
SWAP 高低4位元交换 

算术指令 
ADD 两数相加
ADDC 两数相加再加C
SUBB 两数相减再减C
INC 加一指令
DEC 减一指令
MUL (MUL AB乘法指令仅此一条)相乘指令,所得的16位二进制数低8位存累加器A高8位存B
DIV (DIV AB 除法指令仅此一条)相除指令,所得商存A,余数存B
DA (DA A 只此一条指令)调整为十进数 

逻辑指令 
ANL做AND(逻辑与)运算
ORL做OR(逻辑或)运算
XRL 做(逻辑异或)运算
CLR 清除为0
CPL 取反指令
RL 不带进位左环移
RLC 带进位左环移
RR 不带进位右环移
RRC 带进位右环移

控制转移类指令 
JC C=1时跳
JNC C=0时跳
JB 位元=1时跳
JNB 位元=0时跳
JBC 位元=1时跳且清除此位元
LCALL 长调用子程序
ACALL 绝对调用子程序
RET 由副程式返回
RETI 由中断副程式返回
AJMP 绝对转移
SJMP 相对转移
JMP @A+DPTR 散转,相对DPTR的间接转移
JZ A=0时跳
JNZA 0时跳
CJNE 二数比较,不相等时跳
DJNZ 减一,不等於0时跳
NOP 空操作

位变量指令
SETB 设定为1

ORG 程序开始,规定程序的起始地址
END 程序结束
EQU  等值指令(先赋值后使用)例:SUM EQU 30H
DB 定义字节指令
DW 定义字内容
DS 定义保留一定的存贮单元数目   
BIT 位地址符号指令 例:SAM BIT P1.0
RET 子程序返回指令
RETI 中断子程序返回指令
$ 本条指令地址

算术运算指令 
指令 说明 周期 
ADD A,Rn A←A+Rn 12 
ADD A,direct A←A+direct 12 
ADD A,@Ri A←A+Ri 12 
ADD A,#data A←A+data 12 
ADDC A,Rn A←A+Rn+C 12 
ADDC A,direct A←A+direct+C 12 
ADDC A,@Ri A←A+Ri+C 12 
ADDC A,#data A←A+data+C 12 
SUBB A,Rn A←A-Rn-C 12 
SUBB A,direct A←A-direct-C 12 
SUBB A,@Ri A←A-Ri-C 12 
SUBB A,#data A←A-data-C 12 
INC A A←A+1 12 
INC Rn Rn←Rn+1 12 
INC direct direct←direct+1 12 
INC @Ri @Ri←@Ri+1 12 
INC DPTR DPTR←DPTR+1 12 
DEC A A←A-1 12 
DEC Rn Rn←Rn-1 12 
DEC direct direct←direct-1 12 
DEC @Ri @Ri←@Ri-1 12 
MUL AB 两个无符号的8位数据相乘,其中高阶8位放入B缓存器,低阶8位则放入累积器ACC 24 
DIV AB 两个无符号的8位数据相除,把ACC值除以B缓存器值,商数放回ACC,余数放在B 48 
DA A 累加器作十进制调整 48 
      
      
逻辑运算指令 
指令 说明 周期 
ANL A,Rn A←A and Rn 12 
ANL A,direct A←A and direct 12 
ANL A,@Ri A←A and Ri 12 
ANL A,#data A←A and data 12 
ANL direct,A direct←direct and A 12 
ANL direct,#data direct←direct and data 24 
ORL A,Rn A←A or Rn 12 
ORL A,direct A←A or direct 12 
ORL A,Rn A←A or Rn 12 
ORL A,@Ri A←A or Ri 12 
ORL A,#data A←A or data 12 
ORL direct,A direct←direct or A 12 
ORL direct,#data direct←direct or data 24 
XRL A,Rn A←A xor Rn 12 
XRL A,direct A←A xor direct 12 
XRL A,@Ri A←A xor Ri 12 
XRL A,#data A←A xor data 12 
XRL direct,A direct←direct xor A 12 
XRL direct,#data direct←direct xor data 12 
CLR A 清除累加器 12 
CPL A 累加器反相 12 
RL A 累加器向左旋转 12 
RLC A 累加器和C左旋 12 
RR A 累加器向右旋转 12 
RRC A 累加器和C右旋 12 
SWAP A 累加器的高低四位互换 12 
      
      
数据转移指令 
指令 说明 周期 
MOV A,Rn A←Rn 12 
MOV A,direct A←direct 12 
MOV A,@Ri A←Ri 12 
MOV A,#data A←data 12 
MOV Rn,A Rn←A 12 
MOV Rn,direct Rn←direct 24 
MOV Rn,#data Rn←data 12 
MOV direct,A direct←A 12 
MOV direct,Rn direct←Rn 24 
MOV direct,direct direct←direct 24 
MOV direct,@Ri direct←Ri 24 
MOV direct,#data direct←data 24 
MOV @Ri,A Ri←A 12 
MOV @Ri,direct Ri←direct 24 
MOV @Ri,#data Ri←data 12 
MOV DPTR,#data 16 Ri←16bit data 24 
MOVC A,@A+DPTR A←程序内存的数据 24 
MOVC A,@A+PC A←程序内存的数据 24 
MOVX A,@Ri A←外部RAM的数据(8bit地址) 24 
MOVX A,@DPTR A←外部RAM的数据(16bit地址) 24 
MOVX @Ri,A 外部的RAM(8bit)←A 24 
MOVX @DPTR,A 外部的RAM(16bit)←A 24 
PUSH direc 推迭区←direct 24 
POP direc direct←堆栈区 24 
XCH A,Rn A和Rn互换 12 
XCH A,direct A和direct互换 12 
XCH A,@Ri A和Ri互换 12 
XCHD A,@Ri A和Ri的低四位互换 12 
      
      
位运算指令 
指令 说明 周期 
CLR C 清除进位旗标 12 
CLR bit 清除直接位 12 
SETB C 设定进位旗标 12 
SETB bit 设定直接位 12 
CPL C 进位旗标反相 12 
CPL bit 直接位反相 12 
ANL C,bit C←C and bit 24 
ANL C,/bit C←C and bit(反相) 24 
ORL C,bit C←C or bit 24 
ORL C,/bit C←C or bit(反相) 24 
MOV C,bit C←bit 12 
MOV bit,C bit←C 24 
JC rel 若C=1跳至rel 24 
JNC rel 若C=0跳至rel 24 
JB bit,rel 若bit=1跳至rel 24 
JNB bit,rel 若bit=0跳至rel 24 
JBC bit,rel 若bit=1跳至rel,且清除此位 24 
      
   
      
程序跳跃指令 
指令 说明 周期 
ACALL addr11 绝对式子程序呼叫 24 
LCALL addr16 远程子程序呼叫 24 
RET 从子程序返回 24 
RETI 从中断子程序返回 24 
AJMP addr11 绝对式跳跃 24 
LJMP addr16 远程跳跃 24 
SJMP rel 短程跳跃 24 
JMP @A+DPTR 间接跳跃 24 
JZ rel 若A=0跳至rel 24 
JNZ rel 若A不等于0跳至rel 24 
CJNE A,direct,rel 若A不等于direct跳至rel 24 
CJNE A,#data,rel 若A不等于data跳至rel 24 
CJNE Rn,#data,rel 若Rn不等于data跳至rel 24 
CJNE @Ri,#data,rel 若Ri不等于data跳至rel 24 
DJNZ Rn,rel Rn减1不等于0跳至rel 24 
DJNZ direct,rel direct减1不等于0跳至rel 24 
NOP 没动作 12 
      
      
缩写符号说明 
缩写符号 说明 备注 
Rn 缓存器R0-R7   
direct 8bit内部数据存储器,包括   
1.内部数据存储器(00-7F)的地址 
2.特殊功能缓存器(80-FF)的地址,如P0,PSW,TMOD..等 
@Ri 由缓存器R0或R1所寻址的内部RAM数据   
#data 8bit常数   
#data 16 16bit常数   
addr 16 16bit的目的地址,可使跳跃指令跳跃64k   
addr 11 11bit的目的地址,可使跳跃指令跳跃2k   
rel 具正负号的8位地址偏移量,用于相对地址的跳跃   
bit 1个bit:只所有可以位寻址的位。(如PSW.7为CY旗号)   
A 累加器(累积器)   
C或CY 进位旗号   
AC 辅助进位旗号   
Bb 指定位B0-B7   
D 半字节(4Bit)助忆符号   
F0 旗号0   
I 中断   
PC 程序计数器   
P0 I/O port 0   
P1 I/O port 1   
P2 I/O port 2   
P3 I/O port 3   
PSW 程序状态字组(类似于旗号缓存器)   
SP 堆栈指针缓存器   
B 缓存器B   
DPTR 数据指针缓存器   
X 外部滋要内存的助忆符号   
@ 间接地址符号   
$ 程序计数迄目前的值   
reg 缓存器 

8051 INSTRUCTION SET 
1.Arithmetic operations:
Mnemonic       Byte  Cyc
ADD A,@Ri       1     1 
ADD A,Rn       1     1 
ADD A,direct    2     1 
ADD A,#data     2     1 
ADDC A,@Ri      1      1 
ADDC A,Rn      1      1 
ADDC A,direct   2      1 
ADDC A,#data    2      1 
SUBB A,@Ri     1      1 
SUBB A,Rn      1      1 
SUBB A,direct   2      1 
SUBB A,#data    2      1 
INC A        1      1
INC @Ri       1      1
INC Rn       1      1
INC DPTR      1      1
INC direct    2       1
INC direct    2       1
DEC A        1       1
DEC @Ri       1       1
DEC Rn        1       1 
DEC direct     2       1
MUL AB        1      4
DIV AB        1       4
DA A         1      1

2.Logical opreations:
ANL A,@Ri       1        1
XRL A,@Ri       1        1
ANL A,Rn        1        1
XRL A,Rn        1        1
ANL A,direct     2        1
XRL A,direct     2        1
ANL A,#data      2        1 
XRL A,#data      2        1
ANL direct,A     2        1 
XRL direct,A     2        1
ANL direct,#data 3        2 
XRL direct,#data 3        2
ORL A,@Ri        1        1
CLR A            1        1
ORL A,Rn         1        1
CPL A            1        1
ORL A,direct     2        1 
RL A             1        1
ORL A,#data      2        1  
RLC A            1        1
ORL direct,A     2        1   
RR A             1        1
ORL direct,#data 3        2 
RRC A            1        1
SWAP A           1        1

3.Data transfer:
Mnemonic        Byte     Cyc
MOV A,@Ri        1        1 
MOV DPTR,#data16 3        2
MOV A,Rn         1        1 
MOVC A,@A+DPTR   1        2
MOV A,direct     2        1 
MOVC A,@A+PC     1        2
MOV A,#data      2        1 
MOVX A,@Ri       1        2
MOV @Ri,A        1        1
MOVX A,@DPTR     1        2
MOV @Ri,direct   2        2 
MOVX @Ri,A       1        2
MOV @Ri,#data    2        1 
MOVX @DPTR,A     1        2
MOV Rn,A         1        1 
PUSH direct      2        2
MOV Rn,direct    2        2 
POP direct       2        2
MOV Rn,#data     2        1 
XCH A,@Ri        1        1
MOV direct,A     2        1 
XCH A,Rn         1        1
MOV direct,@Ri   2        2 
XCH A,direct     2        1
MOV direct,Rn    2        2 
XCHD A,@Ri       1        1
MOV direct,direct3        2
MOV direct,#data 3        2

4.Boolean variable manipulation:
Mnemonic        Byte            Cyc
CLR C           1               1 
ANL C,bit       2               2
SETB C          1               1 
ANL C,/bit      2               2
CPL C           1               1 
ORL C,bit       2               2
CLR bit         2               1 
ORL C,/bit      2               2
SETB bit        2               1 
MOV C,bit       2               1
CPL bit         2               1 
MOV bit,C       2               2

5.Program and machine control:
Mnemonic        Byte            Cyc
NOP             1               1 
JZ rel          2               2
RET             1               2 
JNZ rel         2               2
RETI            1               2 
JC rel          2               2
ACALL addr11    2               2 
JNC rel         2               2
AJMP addr11     2               2 
JB bit,rel      3               2
LCALL addr16    3               2 
JNB bit,rel     3               2
LJMP addr16    3              2 
JBC bit,rel   3              2
SJMP rel      2               2 
CJNE A,direct,rel  3           2
JMP @A+DPTR    1               2 
CJNE A,#data,rel 3              2
DJNZ Rn,rel    2            2 
CJNE @Ri,#data,rel 3           2
DJNZ direct,rel   3          2 
CJNE Rn,#data,rel  3           2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值