8051系列单片机汇编语言指令速查表 编号 指令名称 数据传送类指令 1 2 3 4 MOV A, #data MOV direct, #data Mov Rn, #data Mov @Ri, #data 将立即数#data送累加器A 将立即数#data送片内RAM direct地址单元内 将立即数#data送寄存器Rn 寄存器Ri内为RAM地址,将立即数#data送该地址单元内 将direct1地址单元的数据送 direct2地址单元内 将Rn的数据送 direct地址单元内 将direct地址单元内的数据送Rn寄存器 寄存器Ri内为RAM地址,将该地址单元内的数据送direct地址单元内 寄存器Ri内为RAM地址,将direct地址单元内的数据送该地址单元内 将寄存器Rn内的数据送累加器A 将累加器A内的数据送寄存器Rn 将direct地址单元内的数据送累加器A 将累加器A内的数据送direct地址单元内 寄存器Ri内为RAM地址,将该地址单元内的数据送累加器A 寄存器Ri内为RAM地址,将累加器A的数据送该地址单元内 将16位立即数送数据指针DPTR寄存器 累加器A高低4位数据交换 将累加器A数据和寄存器Rn内的数据交换 将累加器A数据和direct地址单元内的数据交换 寄存器Ri内为RAM地址,将该地址单元内的数据与累加器A的数据交换 寄存器Ri内为RAM地址,将该地址单元内指令助记符 指令说明 5 6 7 8 一般传送 Mov direct2, direct1 Mov direct, rn Mov Rn, direct Mov direct, @Ri 9 10 11 12 13 14 Mov @Ri, direct Mov A, Rn Mov Rn, A Mov A, direct Mov direct, A Mov A, @Ri 15 16 17 18 19 目的地址传送 Mov @Ri , A Mov DPTR, #data16 SWAP A XCH A, Rn XCH A, direct 字节交换 20 21 XCH A, @Ri XCHD A, @Ri
的数据低4位与A内的低4位交换 22 MOVX @DPTR, A 将累加器A的数据送数据指针DPTR寄存器所指外部RAM地址单元内 将DPTR寄存器所指外部RAM地址单元内的数据送累加器A 寄存器Ri内为片外RAM地址,将该地址单元内的数据送累加器A 寄存器Ri内为片外RAM地址,将累加器A内数据送该地址单元 A+DPTR构成ROM地址,将该地址内的数据送累加器A内 A+PC构成ROM地址,将该地址内的数据送累加器A内 堆栈指针SP自加1后,将direct地址单元的数据压进堆栈, 堆栈的数据送direct地址单元中,后堆栈指针减1, 23 与外部RAM传送 24 MOVX A , @DPTR MOVX A, @Ri 25 MOVX @Ri, A 26 与ROM传送 27 MOVC A, @A+DPTR MOVC A, @A+PC 28 栈操作 29 算术运算指令 30 PUSH direct POP direct ADD A, Rn 将寄存器Rn与累加器A的数据相加后,结果保存到累加器A 将direct地址单元内的数据与累加器A的数据相加后结果保存到累加器A 寄存器Ri内位地址,将该地址单元内的数据与累加器A的数据相加后结果保存到累加器A 将立即数与累加器A的数据相加后结果保存到累加器A 将寄存器Rn与累加器A的数据相加,再加上进位标志内的值后,结果保存到累加器A 将direct地址单元内的数据与累加器A的数据相加,再加上进位标志内的值后,结果保存到累加器A 寄存器Ri内为RAM地址,将该地址单元内的数据与累加器A的数据相加,再加上进位标志内的值后,结果保存到累加器A 31 加法指令 32 ADD A, direct ADD A, @Ri 33 ADD A, #data 34 ADDC A, Rn 35 带进位加法 ADDC A, direct 36 ADDC A, @Ri
37 ADDC A, #data 将立即数与累加器A的数据相加,再加上进位标志内的值后结果保存到累加器A 将与累加器A的数据减去寄存器Rn的数据,再减去进位标志内的值,结果保存到累加器A 将与累加器A的数据减去direct地址单元内的数据,再减去进位标志内的值,结果保存到累加器A 寄存器Ri内为RAM地址,将累加器A的数据减去该地址单元内的数据,再减去进位标志内的值后,结果保存到累加器A 将累加器A的数据减去立即数,再减去进位标志内的值后,结果保存到累加器A 累加器A的值自加1 寄存器Rn的值自加1 direct地址单元内值自加1 寄存器Ri内为RAM地址,该地址单元内的值自加1 数据指针寄存器DPTR内的值自加1 累加器A的值自减1 寄存器Rn的值自减1 direct地址单元内的值自减1 寄存器Ri内为RAM地址,该地址单元内的值自减1 累加器A与寄存器B内的值相乘,乘积的高8位保存在B寄存器,低8位保存在累加器A中 累加器A的值除以寄存器B的值,商保存在累加器A中,余数保存在B寄存器 对累加器A的结果进行十进制调整 38 SUBB A, Rn 39 带借位减法 40 SUBB A, direct SUBB A, @Ri 41 42 43 44 45 46 47 48 49 50 减1指令 加1指令 SUBB A, #data INC A INC Rn INC direct INC @Ri INC DPTR DEC A DEC Rn DEC direct DEC @Ri 51 乘法 MUL AB 52 53 除法 DIV AB 二-十进制调整 DA A 逻辑运算指令 54 逻辑与 55 ANL A, direct 将累加器A的值和direct地址单元内的值进行与操作,结果保存到累加器A中 ANL A, Rn 将累加器A的值和寄存器Rn的值进行与操作,结果保存到累加器A中
56 ANL A, @Ri 寄存器Ri内为RAM地址,将累加器A的值和该地址单元内的值进行与操作,结果保存到累加器A中 将累加器A的值和立即数进行与操作,结果保存到累加器A中 将累加器A的值和direct地址单元内的值进行与操作,结果保存到direct地址单元内 将立即数和direct地址单元内的值进行与操作,结果保存到direct地址单元内 将累加器A的值和寄存器Rn的值进行或操作,结果保存到累加器A中 将累加器A的值和direct地址单元内的值进行或操作,结果保存到累加器A中 寄存器Ri内为RAM地址,将累加器A的值和该地址单元内的值进行或操作,结果保存到累加器A中 将累加器A的值和立即数进行或操作,结果保存到累加器A中 将累加器A的值和direct地址单元内的值进行或操作,结果保存到direct地址单元内 将立即数和direct地址单元内的值进行或操作,结果保存到direct地址单元内 将累加器A的值和寄存器Rn的值进行异或操作,结果保存到累加器A中 将累加器A的值和direct地址单元内的值进行异或操作,结果保存到累加器A中 寄存器Ri内为RAM地址,将累加器A的值和该地址单元内的值进行异或操作,结果保存到累加器A中 将累加器A的值和立即数进行异或操作,结果保存到累加器A中 将累加器A的值和direct地址单元内的值进行异或操作,结果保存到direct地址单元内 将立即数和direct地址单元内的值进行异或操作,结果保存到direct地址单元内 累加器A的值按位取反 57 ANL A, #data 58 ANL direct, A 59 ANL direct, #data 60 ORL A, Rn 61 ORL A, direct 62 逻辑或 63 ORL A, @Ri ORL A, #data 64 ORL direct, A 65 ORL direct, #data 66 XRL A, Rn 67 XRL A, direct 68 逻辑异或 69 XRL A, @Ri XRL A, #data 70 XRL direct, A 71 72
XRL direct, #data 按位取反 CPL A
73 累加器清零 CLR A RR A RL A RRC A RLC A 累加器A清0 74 逻辑右移 累加器A的值循环右移1位 75 逻辑左移 累加器A的值循环左移1位 76 带进位右移 累加器A的值带进位循环右移1位 77 带进位左移 累加器A的值带进位循环左移1位 控制转移指令 78 SJMP rel rel为地址偏移量,PC加2后的地址加上rel作为目标地址,程序跳到目标地址继续运行 79 无条件转移 80 addr11为11位地址,PC加2后的地址高5AJMP addr11(a10- a0) 位与指令中的低11位地址构成目标地址,程序跳到目标地址继续运行 将addr16的16位地址送程序计数器PC,使机器执行下一条指令时无条件转移到addr16处执行程序 目标地址的基地址放在DPTR中,目标地址对基地址的偏移量放在累加器A中,它们相加构成目标地址 If(累加器A=0)则PC加2再加上rel作为目标地址 If(累加器A!=0)则PC加2再加上rel作为目标地址 If(累加器A!= direct地址单元的值)则PC加3再加上rel作为目标地址 If(累加器A!= 立即数)则PC加3再加上rel作为目标地址 If(寄存器Rn的值!= 立即数)则PC加3再加上rel作为目标地址 LJMP addr16 81 JMP @A+DPTR 82 JZ rel JNZ rel CJNE A, direct, rel 条件转移 83 84 85 CJNE A, #data, rel 86 CJNE Rn, #data, rel 87 寄存器Ri内为RAM地址,If(该地址单元CJNE @Ri, #data, rel 的值!= 立即数)则PC加3再加上rel作为目标地址 循环转移 DJNZ Rn, rel 寄存器Rn的值减1后,If(寄存器Rn的88