1、c51汇编语言指令集资料转移指令 MOV 移动MOVC 程式记忆体移动MOVX 外部RAM和扩展I/O口与累加器A的数据传送指令PUSH 放入堆叠POP 由堆叠取回XCH 8位元交换XCHD 低4位元交换 SWAP 高低4位元交换 算术指令 ADD 两数相加ADDC 两数相加再加CSUBB 两数相减再减CINC 加一指令DEC 减一指令MUL (MUL AB乘法指令仅此一条)相乘指令,所得的16位二进制数低8位存累加器A高8位存BDIV (DIV AB 除法指令仅此一条)相除指令,所得商存A,余数存BDA (DA A 只此一条指令)调整为十进数 逻辑指令 ANL做AND(逻辑与)运算ORL做O
2、R(逻辑或)运算XRL 做(逻辑异或)运算CLR 清除为0CPL 取反指令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 设定为1ORG 程序
3、开始,规定程序的起始地址END 程序结束EQU 等值指令(先赋值后使用)例:SUM EQU 30HDB 定义字节指令DW 定义字内容DS 定义保留一定的存贮单元数目 BIT 位地址符号指令 例:SAM BIT P1.0RET 子程序返回指令RETI 中断子程序返回指令$ 本条指令地址算术运算指令 指令 说明 周期 ADD A,Rn AA+Rn 12 ADD A,direct AA+direct 12 ADD A,Ri AA+Ri 12 ADD A,#data AA+data 12 ADDC A,Rn AA+Rn+C 12 ADDC A,direct AA+direct+C 12 ADDC A,
4、Ri AA+Ri+C 12 ADDC A,#data AA+data+C 12 SUBB A,Rn AA-Rn-C 12 SUBB A,direct AA-direct-C 12 SUBB A,Ri AA-Ri-C 12 SUBB A,#data AA-data-C 12 INC A AA+1 12 INC Rn RnRn+1 12 INC direct directdirect+1 12 INC Ri RiRi+1 12 INC DPTR DPTRDPTR+1 12 DEC A AA-1 12 DEC Rn RnRn-1 12 DEC direct directdirect-1 12 DEC
5、 Ri RiRi-1 12 MUL AB 两个无符号的8位数据相乘,其中高阶8位放入B缓存器,低阶8位则放入累积器ACC 24 DIV AB 两个无符号的8位数据相除,把ACC值除以B缓存器值,商数放回ACC,余数放在B 48 DA A 累加器作十进制调整 48 逻辑运算指令 指令 说明 周期 ANL A,Rn AA and Rn 12 ANL A,direct AA and direct 12 ANL A,Ri AA and Ri 12 ANL A,#data AA and data 12 ANL direct,A directdirect and A 12 ANL direct,#data
6、 directdirect and data 24 ORL A,Rn AA or Rn 12 ORL A,direct AA or direct 12 ORL A,Rn AA or Rn 12 ORL A,Ri AA or Ri 12 ORL A,#data AA or data 12 ORL direct,A directdirect or A 12 ORL direct,#data directdirect or data 24 XRL A,Rn AA xor Rn 12 XRL A,direct AA xor direct 12 XRL A,Ri AA xor Ri 12 XRL A,#
7、data AA xor data 12 XRL direct,A directdirect xor A 12 XRL direct,#data directdirect 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 ARn 12 MOV A,direct Adirect 12 MOV A,Ri ARi 12 MOV A,#data Ad
8、ata 12 MOV Rn,A RnA 12 MOV Rn,direct Rndirect 24 MOV Rn,#data Rndata 12 MOV direct,A directA 12 MOV direct,Rn directRn 24 MOV direct,direct directdirect 24 MOV direct,Ri directRi 24 MOV direct,#data directdata 24 MOV Ri,A RiA 12 MOV Ri,direct Ridirect 24 MOV Ri,#data Ridata 12 MOV DPTR,#data 16 Ri16
9、bit 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
10、 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 CC and bit 24 ANL C,/bit CC and bit(反相) 24 ORL C,bit CC or bit 24 ORL C,/bit CC or bit(反相) 24 MOV C,bit Cbit 12 MOV bit,C bitC 24 JC rel 若C=1跳至rel 24 JNC
11、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
12、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.内部数
13、据存储器(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
14、 程序计数器 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 CycADD 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
15、 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 1INC Ri 1 1INC Rn 1 1INC DPTR 1 1INC direct 2 1INC direct 2 1DEC A 1 1DEC Ri 1 1DEC Rn 1 1 DEC direct 2 1MUL AB 1 4DIV AB 1 4DA A 1 12.Logical opreations:ANL A,Ri 1 1XRL A,Ri 1 1ANL A,Rn 1
16、1XRL A,Rn 1 1ANL A,direct 2 1XRL A,direct 2 1ANL A,#data 2 1 XRL A,#data 2 1ANL direct,A 2 1 XRL direct,A 2 1ANL direct,#data 3 2 XRL direct,#data 3 2ORL A,Ri 1 1CLR A 1 1ORL A,Rn 1 1CPL A 1 1ORL A,direct 2 1 RL A 1 1ORL A,#data 2 1 RLC A 1 1ORL direct,A 2 1 RR A 1 1ORL direct,#data 3 2 RRC A 1 1SWA
17、P A 1 13.Data transfer:Mnemonic Byte CycMOV A,Ri 1 1 MOV DPTR,#data16 3 2MOV A,Rn 1 1 MOVC A,A+DPTR 1 2MOV A,direct 2 1 MOVC A,A+PC 1 2MOV A,#data 2 1 MOVX A,Ri 1 2MOV Ri,A 1 1MOVX A,DPTR 1 2MOV Ri,direct 2 2 MOVX Ri,A 1 2MOV Ri,#data 2 1 MOVX DPTR,A 1 2MOV Rn,A 1 1 PUSH direct 2 2MOV Rn,direct 2 2
18、POP direct 2 2MOV Rn,#data 2 1 XCH A,Ri 1 1MOV direct,A 2 1 XCH A,Rn 1 1MOV direct,Ri 2 2 XCH A,direct 2 1MOV direct,Rn 2 2 XCHD A,Ri 1 1MOV direct,direct3 2MOV direct,#data 3 24.Boolean variable manipulation:Mnemonic Byte CycCLR C 1 1 ANL C,bit 2 2SETB C 1 1 ANL C,/bit 2 2CPL C 1 1 ORL C,bit 2 2CLR
19、 bit 2 1 ORL C,/bit 2 2SETB bit 2 1 MOV C,bit 2 1CPL bit 2 1 MOV bit,C 2 25.Program and machine control:Mnemonic Byte CycNOP 1 1 JZ rel 2 2RET 1 2 JNZ rel 2 2RETI 1 2 JC rel 2 2ACALL addr11 2 2 JNC rel 2 2AJMP addr11 2 2 JB bit,rel 3 2LCALL addr16 3 2 JNB bit,rel 3 2LJMP addr16 3 2 JBC bit,rel 3 2SJMP rel 2 2 CJNE A,direct,rel 3 2JMP A+DPTR 1 2 CJNE A,#data,rel 3 2DJNZ Rn,rel 2 2 CJNE Ri,#data,rel 3 2DJNZ direct,rel 3 2 CJNE Rn,#data,rel 3 2
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1