【51汇编语言指令大全】在单片机开发中,51系列单片机因其结构简单、功能强大而被广泛使用。51汇编语言是控制这类单片机运行的核心工具之一。掌握其指令集对于编写高效、稳定的程序至关重要。本文将对51汇编语言的常用指令进行总结,并以表格形式展示,帮助开发者快速查阅和理解。
一、51汇编语言指令分类
51汇编语言指令按功能可分为以下几类:
| 指令类别 | 功能说明 |
| 数据传送指令 | 用于在寄存器、内存之间传输数据 |
| 算术运算指令 | 实现加减乘除等基本算术操作 |
| 逻辑运算指令 | 包括与、或、异或等逻辑操作 |
| 移位指令 | 对寄存器或存储单元中的数据进行左移或右移 |
| 控制转移指令 | 改变程序执行顺序,如跳转、调用、返回等 |
| 布尔操作指令 | 处理位(bit)级别的数据操作 |
| 其他指令 | 如空操作、堆栈操作等 |
二、常用51汇编语言指令表
以下是一些常用的51汇编语言指令及其简要说明:
| 指令 | 功能 | 说明 |
| MOV A, Rn | 将寄存器Rn的内容传送到累加器A | n为0~7 |
| MOV A, direct | 将直接地址direct的内容传送到A | direct为8位地址 |
| MOV A, @Ri | 将Ri所指向的地址内容传送到A | Ri为R0或R1 |
| MOV A, data | 将立即数data传送到A | data为8位常量 |
| MOV Rn, A | 将A的内容传送到寄存器Rn | n为0~7 |
| MOV Rn, direct | 将direct地址内容传送到Rn | direct为8位地址 |
| MOV Rn, data | 将立即数data传送到Rn | data为8位常量 |
| MOV direct, A | 将A的内容传送到direct地址 | |
| MOV direct, Rn | 将Rn的内容传送到direct地址 | |
| MOV direct, direct | 将一个直接地址内容传送到另一个直接地址 | |
| MOV direct, @Ri | 将Ri指向的地址内容传送到direct地址 | |
| MOV @Ri, A | 将A的内容传送到Ri指向的地址 | |
| MOV @Ri, direct | 将direct地址内容传送到Ri指向的地址 | |
| MOV @Ri, data | 将立即数data传送到Ri指向的地址 | |
| MOVX A, @DPTR | 将外部数据存储器DPTR地址的内容传送到A | |
| MOVX @DPTR, A | 将A的内容传送到外部数据存储器DPTR地址 | |
| MOVX A, @Ri | 将外部数据存储器Ri地址的内容传送到A | |
| MOVX @Ri, A | 将A的内容传送到外部数据存储器Ri地址 | |
| MOVC A, @A+PC | 将程序存储器中A+PC地址的内容传送到A | |
| MOVC A, @A+DPTR | 将程序存储器中A+DPTR地址的内容传送到A | |
| ADD A, Rn | 将Rn内容与A相加,结果存入A | |
| ADD A, direct | 将direct地址内容与A相加,结果存入A | |
| ADD A, data | 将立即数data与A相加,结果存入A | |
| ADDC A, Rn | 带进位加法,Rn与A相加,结果存入A | |
| ADDC A, direct | 带进位加法,direct与A相加,结果存入A | |
| ADDC A, data | 带进位加法,data与A相加,结果存入A | |
| SUBB A, Rn | 带借位减法,Rn从A中减去,结果存入A | |
| SUBB A, direct | 带借位减法,direct从A中减去,结果存入A | |
| SUBB A, data | 带借位减法,data从A中减去,结果存入A | |
| MUL AB | 将A与B相乘,结果低字节存A,高字节存B | |
| DIV AB | 将A除以B,商存A,余数存B | |
| DA A | 十进制调整,用于BCD码加法后调整 | |
| ANL A, Rn | A与Rn进行逻辑与操作,结果存A | |
| ANL A, direct | A与direct地址内容进行逻辑与操作 | |
| ANL A, data | A与立即数进行逻辑与操作 | |
| ANL direct, A | direct地址内容与A进行逻辑与操作 | |
| ANL direct, data | direct地址内容与立即数进行逻辑与操作 | |
| ORL A, Rn | A与Rn进行逻辑或操作 | |
| ORL A, direct | A与direct地址内容进行逻辑或操作 | |
| ORL A, data | A与立即数进行逻辑或操作 | |
| ORL direct, A | direct地址内容与A进行逻辑或操作 | |
| ORL direct, data | direct地址内容与立即数进行逻辑或操作 | |
| XRL A, Rn | A与Rn进行逻辑异或操作 | |
| XRL A, direct | A与direct地址内容进行逻辑异或操作 | |
| XRL A, data | A与立即数进行逻辑异或操作 | |
| XRL direct, A | direct地址内容与A进行逻辑异或操作 | |
| XRL direct, data | direct地址内容与立即数进行逻辑异或操作 | |
| CLR A | 清零累加器A | |
| CPL A | 取反累加器A | |
| RL A | 左移一位,最高位移入最低位 | |
| RLC A | 带进位左移 | |
| RR A | 右移一位,最低位移入最高位 | |
| RRC A | 带进位右移 | |
| SWAP A | 交换A的高4位和低4位 | |
| JZ rel | 若A为0,则跳转 | |
| JNZ rel | 若A不为0,则跳转 | |
| JC rel | 若进位标志C为1,则跳转 | |
| JNC rel | 若进位标志C为0,则跳转 | |
| JB bit, rel | 若bit为1,则跳转 | |
| JNB bit, rel | 若bit为0,则跳转 | |
| JBC bit, rel | 若bit为1则跳转并清零bit | |
| DJNZ Rn, rel | Rn减1,若不为0则跳转 | |
| DJNZ direct, rel | direct地址内容减1,若不为0则跳转 | |
| ACALL addr11 | 调用子程序,11位地址 | |
| LCALL addr16 | 调用子程序,16位地址 | |
| RET | 子程序返回 | |
| RETI | 中断返回 | |
| NOP | 空操作 | |
| SETB bit | 设置bit为1 | |
| CLR bit | 清零bit | |
| CPL bit | 取反bit |
三、结语
51汇编语言虽然语法简洁,但功能强大,是单片机编程的重要基础。通过掌握这些指令,开发者可以更灵活地控制硬件资源,实现复杂的功能。建议初学者结合实际项目进行练习,逐步提高对51汇编语言的理解和应用能力。


