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