51单片机汇编指令表
指令说明 (数据传递类指令) 寄存器传送到累加器 直接地址传送到累加器 累加器传送到外部RAM(8 地址) 立即数传送到累加器 累加器传送到寄存器 直接地址传送到寄存器 累加器传送到直接地址 寄存器传送到直接地址 直接地址传送到直接地址 累加器传送到直接地址 间接RAM 传送到直接地址 立即数传送到直接地址 直接地址传送到直接地址 直接地址传送到间接RAM 立即数传送到间接RAM 16 位常数加载到数据指针 代码字节传送到累加器 代码字节传送到累加器 外部RAM(8 地址)传送到累加器 外部RAM(16 地址)传送到累加器 累加器传送到外部RAM(8 地址) 累加器传送到外部RAM(16 地址) 直接地址压入堆栈 直接地址弹出堆栈 寄存器和累加器交换 直接地址和累加器交换 间接RAM 和累加器交换 间接RAM 和累加器交换低4 位字节 (算术运算类指令) 累加器加1 寄存器加1 直接地址加1 间接RAM 加1 数据指针加1 累加器减1 寄存器减1 直接地址减1 间接RAM 减1 累加器和B 寄存器相乘 累加器除以B 寄存器 累加器十进制调整 寄存器与累加器求和 直接地址与累加器求和 间接RAM 与累加器求和 立即数与累加器求和 寄存器与累加器求和(带进位) 直接地址与累加器求和(带进位) 间接RAM 与累加器求和(带进位) 立即数与累加器求和(带进位) 累加器减去寄存器(带借位) 累加器减去直接地址(带借位) 累加器减去间接RAM(带借位) 累加器减去立即数(带借位)
序号
助记符 MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOVC MOVC MOVX MOVX MOVX MOVX PUSH POP XCH XCH XCH XCHD INC INC INC INC INC DEC DEC DEC DEC MUL DIV DA ADD ADD ADD ADD ADDC ADDC ADDC ADDC SUBB SUBB SUBB SUBB A,Rn A,direct A,@Ri A,#data Rn,A Rn,direct Rn,#data direct,Rn direct,direct direct,A direct,@Ri direct,#data @Ri,A @Ri,direct @Ri,#data DPTR,#data16 A,@A+DPTR A,@A+PC A,@Ri A,@DPTR @Ri,A @DPTR,A direct direct A,Rn A, direct A, @Ri A, @Ri A Rn direct @Ri DPTR A Rn direct @Ri AB AB A A,Rn A,direct A,@Ri A,#data A,Rn A,direct A,@Ri A,#data A,Rn A,direct A,@Ri A,#data
E E1 E2 E3 E4 E5 E6 E7 E8 E9 E10 E11 E12 E13 E14 E15 E16 E17 F F1 F2 F3 F4 F5 F6 F7 F8 G G1 G2 G3 G4 G5 G6 G7 G8 G9 G10 G11
CLR CLR SETB SETB CPL CPL ANL ANL ORL ORL MOV MOV JC JNC JB JNB JBC ORG DB DW EQU DATA XDATA BIT END
字节数 周期数 1 2 1 2 1 2 2 2 3 2 2 3 1 2 2 3 1 1 1 1 1 1 2 2 1 2 1 1 1 1 2 1 1 1 1 2 1 1 1 1 1 2 1 2 1 2 1 2 1 2 1 2 1 1 1 1 1 2 1 1 2 1 2 2 2 1 2 1 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 2 1 1 2 1 4 4 1 1 1 1 1 1 1 1 1 1 1 1 1
1 2 1 2 2 3 1 2 1 2 2 3 1 2 1 2 2 3 1 1 1 1 1 1 1 1 2 2 3 3 2 3 3 3 1 2 3 1 1 2 3 2
1 1 1 1 1 2 2 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 1 2 2 2 2 2 2 2
1 2 1 2 1 2 2 2 2 2 2 2 2 2 3 3 2
1 1 1 1 1 1 2 2 2 2 1 2 2 2 2 2 2
指明程序的开始位置 定义数据表 定义16 位的地址表 给一个表达式或一个字符串起名 给一个8 位的内部RAM 起名 给一个8 位的外部RAM 起名 给一个可位寻址的位单元起名 指出源程序到此为止 (指令中的符号标识) Rn 工作寄存器R0-R7 Ri 工作寄存器R0 和R1 @Ri 间接寻址的8 位RAM 单元地址(00H-FFH) #data8 8 位常数 #data16 16 位常数 addr16 16 位目标地址,能转移或调用到64KROM 的任何地方 addr11 11 位目标地址,在下条指令的2K 范围内转移或调用 Rel 8 位偏移量,用于SJMP 和所有条件转移指令,范围-128~+127 Bit 片内RAM 中的可寻址位和SFR 的可寻址位 Direct 直接地址,范围片内RAM 单元(00H-7FH)和80H-FFH $ 指本条指令的起始位置
A A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15 A16 A17 A18 A19 A20 A21 A22 A23 A24 A25 A26 A27 A28 B B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 B12 B13 B14 B15 B16 B17 B18 B19 B20 B21 B22 B23 B24data direct,A direct, #data A,Rn A,direct A,@Ri A,#data direct,A direct, #data A,Rn A,direct A,@Ri A,#data direct,A direct, #data A A A A A A A @A+DPTR rel rel A,direct,rel A,#data,rel Rn,#data,rel @Ri,#data,rel Rn,rel direct,rel add11 add16
C bit C bit C bit C,bit C,/bit C,bit C,/bit C,bit bit, C rel rel bit,rel bit,rel bit,rel
(布尔指令) 清进位位 清直接寻址位 置位进位位 置位直接寻址位 取反进位位 取反直接寻址位 直接寻址位“与”到进位位 直接寻址位的反码“与”到进位位 直接寻址位“或”到进位位 直接寻址位的反码“或”到进位位 直接寻址位传送到进位位 进位位位传送到直接寻址 如果进位位为1 则转移 如果进位位为0 则转移 如果直接寻址位为1 则转移 如果直接寻址位为0 则转移 直接寻址位为1 则转移并清除该位 (伪指令)
ANL ANL ANL ANL ANL ANL ORL ORL ORL ORL ORL ORL XRL XRL XRL XRL XRL XRL CLR CPL RL RLC RR RRC SWAP JMP JZ JNZ CJNE CJNE CJNE CJNE DJNZ DJNZ NOP ACALL LCALL RET RETI AJMP LJMP SJMP
C C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 C14 C15 C16 C17 C18 C19 C20 C21 C22 C23 C24 C25 D D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15 D16 D17
add11 add16 rel
(逻辑运算类指令) 寄存器“与”到累加器 直接地址“与”到累加器 间接RAM“与”到累加器 立即数“与”到累加器 累加器“与”到直接地址 立即数“与”到直接地址 寄存器“或”到累加器 直接地址“或”到累加器 间接RAM“或”到累加器 立即数“或”到累加器 累加器“或”到直接地址 立即数“或”到直接地址 寄存器“异或”到累加器 直接地址“异或”到累加器 间接RAM“异或”到累加器 立即数“异或”到累加器 累加器“异或”到直接地址 立即数“异或”到直接地址 累加器清零 累加器求反 累加器循环左移 带进位累加器循环左移 累加器循环右移 带进位累加器循环右移 累加器高、低4 位交换 (控制转移类指令) 相对DPTR 的无条件间接转移 累加器为0 则转移 累加器为1 则转移 比较直接地址和累加器,不相等转移 比较立即数和累加器,不相等转移 比较寄存器和立即数,不相等转移 比较立即数和间接RAM,不相等转移 寄存器减1,不为0 则转移 直接地址减1,不为0 则转移 空操作,用于短暂延时 绝对调用子程序 长调用子程序 从子程序返回 从中断服务子程序返回 无条件绝对转移 无条件长转移 无条件相对转移