资料转移指令 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
汇编语言基本指令
最新推荐文章于 2024-10-27 10:38:50 发布