单片机交流
登录
直播中
徐胤
7年用户
1027经验值
私信
关注
[问答]
你知道51单片机汇编指令有哪些吗?
开启该帖子的消息推送
51单片机
汇编指令
51
单片机
汇编指令有哪些?
如何对AT89C52单片机进行
proteus
仿真
实验?
回帖
(1)
李之涵
2021-7-14 14:14:48
实验基础
51单片机
本门课程硬件平台为ATMEL公司的AT89C52单片机,在Proteus软件进行仿真实验。
51单片机是8位单片机、8k ROM 、256bytes RAM、四个8位并行I/O口
汇编语言
本门课程使用汇编语言编程。
51单片机汇编指令
;汇编语言指令格式 [标号:] 操作码 [第一操作数] [,第二操作数] [,第三操作数] [;注释] [tr]操作码操作数字节数周期数[/tr]数据传递类指令
MOVA,Rn寄存器传送到累加器1
MOVA,direct直接地址传送到累加器2
MOVA,@Ri累加器传送到外部RAM(8 地址)1
MOVA,#data立即数传送到累加器2
MOVRn,A累加器传送到寄存器1
MOVRn,direct直接地址传送到寄存器2
MOVRn,#data累加器传送到直接地址2
MOVdirect,Rn寄存器传送到直接地址2
MOVdirect,direct直接地址传送到直接地址3
MOVdirect,A累加器传送到直接地址2
MOVdirect,@Ri间接RAM 传送到直接地址2
MOVdirect,#data立即数传送到直接地址3
MOV@Ri,A直接地址传送到直接地址1
MOV@Ri,direct直接地址传送到间接RAM2
MOV@Ri,#data立即数传送到间接RAM2
MOVDPTR,#data1616 位常数加载到数据指针3
MOVCA,@A+DPTR代码字节传送到累加器1
MOVCA,@A+PC代码字节传送到累加器1
MOVXA,@Ri外部RAM(8 地址)传送到累加器1
MOVXA,@DPTR外部RAM(16 地址)传送到累加器1
MOVX@Ri,A累加器传送到外部RAM(8 地址)1
MOVX@DPTR,A累加器传送到外部RAM(16 地址)1
PUSHdirect直接地址压入堆栈2
POPdirect直接地址弹出堆栈2
XCHA,Rn寄存器和累加器交换1
XCHA, direct直接地址和累加器交换2
XCHA, @Ri间接RAM 和累加器交换1
XCHDA, @Ri间接RAM 和累加器交换低4 位字节1
(算术运算类指令)
INCA累加器加11
INCRn寄存器加11
INCdirect直接地址加12
INC@Ri间接RAM 加11
INCDPTR数据指针加11
DECA累加器减11
DECRn寄存器减11
DECdirect直接地址减12
DEC@Ri间接RAM 减11
MULAB累加器和B 寄存器相乘1
DIVAB累加器除以B 寄存器1
DAA累加器十进制调整1
ADDA,Rn寄存器与累加器求和1
ADDA,direct直接地址与累加器求和2
ADDA,@Ri间接RAM 与累加器求和1
ADDA,#data立即数与累加器求和2
ADDCA,Rn寄存器与累加器求和(带进位)1
ADDCA,direct直接地址与累加器求和(带进位)2
ADDCA,@Ri间接RAM 与累加器求和(带进位)1
ADDCA,#data立即数与累加器求和(带进位)2
SUBBA,Rn累加器减去寄存器(带借位)1
SUBBA,direct累加器减去直接地址(带借位)2
SUBBA,@Ri累加器减去间接RAM(带借位)1
SUBBA,#data累加器减去立即数(带借位)2
(逻辑运算类指令)
ANLA,Rn寄存器“与”到累加器1
ANLA,direct直接地址“与”到累加器2
ANLA,@Ri间接RAM“与”到累加器1
ANLA,#data立即数“与”到累加器2
ANLdirect,A累加器“与”到直接地址2
ANLdirect, #data立即数“与”到直接地址3
ORLA,Rn寄存器“或”到累加器1
ORLA,direct直接地址“或”到累加器2
ORLA,@Ri间接RAM“或”到累加器1
ORLA,#data立即数“或”到累加器2
ORLdirect,A累加器“或”到直接地址2
ORLdirect, #data立即数“或”到直接地址3
XRLA,Rn寄存器“异或”到累加器1
XRLA,direct直接地址“异或”到累加器2
XRLA,@Ri间接RAM“异或”到累加器1
XRLA,#data立即数“异或”到累加器2
XRLdirect,A累加器“异或”到直接地址2
XRLdirect, #data立即数“异或”到直接地址3
CLRA累加器清零1
CPLA累加器求反1
RLA累加器循环左移1
RLCA带进位累加器循环左移1
RRA累加器循环右移1
RRCA带进位累加器循环右移1
SWAPA累加器高、低4 位交换1
(控制转移类指令)
JMP@A+DPTR相对DPTR 的无条件间接转移1
JZrel累加器为0 则转移2
JNZrel累加器为1 则转移2
CJNEA,direct,rel比较直接地址和累加器,不相等转移3
CJNEA,#data,rel比较立即数和累加器,不相等转移3
CJNERn,#data,rel比较寄存器和立即数,不相等转移2
CJNE@Ri,#data,rel比较立即数和间接RAM,不相等转移3
DJNZRn,rel寄存器减1,不为0 则转移3
DJNZdirect,rel直接地址减1,不为0 则转移3
NOP空操作,用于短暂延时1
ACALLadd11绝对调用子程序2
LCALLadd16长调用子程序3
RET从子程序返回1
RETI从中断服务子程序返回1
AJMPadd11无条件绝对转移2
LJMPadd16无条件长转移3
SJMPrel无条件相对转移2
(布尔指令)
CLRC清进位位1
CLRbit清直接寻址位2
SETBC置位进位位1
SETBbit置位直接寻址位2
CPLC取反进位位1
CPLbit取反直接寻址位2
ANLC,bit直接寻址位“与”到进位位2
ANLC,/bit直接寻址位的反码“与”到进位位2
ORLC,bit直接寻址位“或”到进位位2
ORLC,/bit直接寻址位的反码“或”到进位位2
MOVC,bit直接寻址位传送到进位位2
MOVbit, C进位位位传送到直接寻址2
JCrel如果进位位为1 则转移2
JNCrel如果进位位为0 则转移2
JBbit,rel如果直接寻址位为1 则转移3
JNBbit,rel如果直接寻址位为0 则转移3
JBCbit,rel直接寻址位为1 则转移并清除该位2
伪指令格式
DS〔标号:〕 DS 表达式值预留存储区命令
BIT字符名称 BIT 位地址定义位命令
USING再定位段名 SEGMENT 段类型〔再定位类型〕用来声明一个再定位段和一个可选的再定位类型。
RSEGRSEG 段名再定位段选择指令
CSEGCSEG [AT 绝对地址表达式]绝对代码段
DSEGDSEG [AT 绝对地址表达式]内部绝对数据段
XSEGXSEG [AT 绝对地址表达式]外部绝对数据段
ISEGISEG [AT 绝对地址表达式]内部间接寻址数据段
BSEGBSEG [AT 绝对地址表达式]绝对位寻址数据段
ORGORG 表达式设定一个新的程序起始地址。
实验基础
51单片机
本门课程硬件平台为ATMEL公司的AT89C52单片机,在Proteus软件进行仿真实验。
51单片机是8位单片机、8k ROM 、256bytes RAM、四个8位并行I/O口
汇编语言
本门课程使用汇编语言编程。
51单片机汇编指令
;汇编语言指令格式 [标号:] 操作码 [第一操作数] [,第二操作数] [,第三操作数] [;注释] [tr]操作码操作数字节数周期数[/tr]数据传递类指令
MOVA,Rn寄存器传送到累加器1
MOVA,direct直接地址传送到累加器2
MOVA,@Ri累加器传送到外部RAM(8 地址)1
MOVA,#data立即数传送到累加器2
MOVRn,A累加器传送到寄存器1
MOVRn,direct直接地址传送到寄存器2
MOVRn,#data累加器传送到直接地址2
MOVdirect,Rn寄存器传送到直接地址2
MOVdirect,direct直接地址传送到直接地址3
MOVdirect,A累加器传送到直接地址2
MOVdirect,@Ri间接RAM 传送到直接地址2
MOVdirect,#data立即数传送到直接地址3
MOV@Ri,A直接地址传送到直接地址1
MOV@Ri,direct直接地址传送到间接RAM2
MOV@Ri,#data立即数传送到间接RAM2
MOVDPTR,#data1616 位常数加载到数据指针3
MOVCA,@A+DPTR代码字节传送到累加器1
MOVCA,@A+PC代码字节传送到累加器1
MOVXA,@Ri外部RAM(8 地址)传送到累加器1
MOVXA,@DPTR外部RAM(16 地址)传送到累加器1
MOVX@Ri,A累加器传送到外部RAM(8 地址)1
MOVX@DPTR,A累加器传送到外部RAM(16 地址)1
PUSHdirect直接地址压入堆栈2
POPdirect直接地址弹出堆栈2
XCHA,Rn寄存器和累加器交换1
XCHA, direct直接地址和累加器交换2
XCHA, @Ri间接RAM 和累加器交换1
XCHDA, @Ri间接RAM 和累加器交换低4 位字节1
(算术运算类指令)
INCA累加器加11
INCRn寄存器加11
INCdirect直接地址加12
INC@Ri间接RAM 加11
INCDPTR数据指针加11
DECA累加器减11
DECRn寄存器减11
DECdirect直接地址减12
DEC@Ri间接RAM 减11
MULAB累加器和B 寄存器相乘1
DIVAB累加器除以B 寄存器1
DAA累加器十进制调整1
ADDA,Rn寄存器与累加器求和1
ADDA,direct直接地址与累加器求和2
ADDA,@Ri间接RAM 与累加器求和1
ADDA,#data立即数与累加器求和2
ADDCA,Rn寄存器与累加器求和(带进位)1
ADDCA,direct直接地址与累加器求和(带进位)2
ADDCA,@Ri间接RAM 与累加器求和(带进位)1
ADDCA,#data立即数与累加器求和(带进位)2
SUBBA,Rn累加器减去寄存器(带借位)1
SUBBA,direct累加器减去直接地址(带借位)2
SUBBA,@Ri累加器减去间接RAM(带借位)1
SUBBA,#data累加器减去立即数(带借位)2
(逻辑运算类指令)
ANLA,Rn寄存器“与”到累加器1
ANLA,direct直接地址“与”到累加器2
ANLA,@Ri间接RAM“与”到累加器1
ANLA,#data立即数“与”到累加器2
ANLdirect,A累加器“与”到直接地址2
ANLdirect, #data立即数“与”到直接地址3
ORLA,Rn寄存器“或”到累加器1
ORLA,direct直接地址“或”到累加器2
ORLA,@Ri间接RAM“或”到累加器1
ORLA,#data立即数“或”到累加器2
ORLdirect,A累加器“或”到直接地址2
ORLdirect, #data立即数“或”到直接地址3
XRLA,Rn寄存器“异或”到累加器1
XRLA,direct直接地址“异或”到累加器2
XRLA,@Ri间接RAM“异或”到累加器1
XRLA,#data立即数“异或”到累加器2
XRLdirect,A累加器“异或”到直接地址2
XRLdirect, #data立即数“异或”到直接地址3
CLRA累加器清零1
CPLA累加器求反1
RLA累加器循环左移1
RLCA带进位累加器循环左移1
RRA累加器循环右移1
RRCA带进位累加器循环右移1
SWAPA累加器高、低4 位交换1
(控制转移类指令)
JMP@A+DPTR相对DPTR 的无条件间接转移1
JZrel累加器为0 则转移2
JNZrel累加器为1 则转移2
CJNEA,direct,rel比较直接地址和累加器,不相等转移3
CJNEA,#data,rel比较立即数和累加器,不相等转移3
CJNERn,#data,rel比较寄存器和立即数,不相等转移2
CJNE@Ri,#data,rel比较立即数和间接RAM,不相等转移3
DJNZRn,rel寄存器减1,不为0 则转移3
DJNZdirect,rel直接地址减1,不为0 则转移3
NOP空操作,用于短暂延时1
ACALLadd11绝对调用子程序2
LCALLadd16长调用子程序3
RET从子程序返回1
RETI从中断服务子程序返回1
AJMPadd11无条件绝对转移2
LJMPadd16无条件长转移3
SJMPrel无条件相对转移2
(布尔指令)
CLRC清进位位1
CLRbit清直接寻址位2
SETBC置位进位位1
SETBbit置位直接寻址位2
CPLC取反进位位1
CPLbit取反直接寻址位2
ANLC,bit直接寻址位“与”到进位位2
ANLC,/bit直接寻址位的反码“与”到进位位2
ORLC,bit直接寻址位“或”到进位位2
ORLC,/bit直接寻址位的反码“或”到进位位2
MOVC,bit直接寻址位传送到进位位2
MOVbit, C进位位位传送到直接寻址2
JCrel如果进位位为1 则转移2
JNCrel如果进位位为0 则转移2
JBbit,rel如果直接寻址位为1 则转移3
JNBbit,rel如果直接寻址位为0 则转移3
JBCbit,rel直接寻址位为1 则转移并清除该位2
伪指令格式
DS〔标号:〕 DS 表达式值预留存储区命令
BIT字符名称 BIT 位地址定义位命令
USING再定位段名 SEGMENT 段类型〔再定位类型〕用来声明一个再定位段和一个可选的再定位类型。
RSEGRSEG 段名再定位段选择指令
CSEGCSEG [AT 绝对地址表达式]绝对代码段
DSEGDSEG [AT 绝对地址表达式]内部绝对数据段
XSEGXSEG [AT 绝对地址表达式]外部绝对数据段
ISEGISEG [AT 绝对地址表达式]内部间接寻址数据段
BSEGBSEG [AT 绝对地址表达式]绝对位寻址数据段
ORGORG 表达式设定一个新的程序起始地址。
举报
更多回帖
rotate(-90deg);
回复
相关问答
51单片机
汇编指令
单片机
的C
51
编程与用
汇编
ASM-
51
编程相比,
有
哪些优点?
2023-02-11
1031
请问PIC
单片机
和AVR
单片机
是
51
内核的吗?
2021-11-02
1886
请问PIC
单片机
和AVR
单片机
是
51
内核的吗?
2021-07-08
1308
MCS-
51
单片机
指令
模拟器
有
何作用
2021-08-02
1774
51
单片机
汇编
2011-12-10
3209
用C语言编写
51
单片机
程序与用
汇编
语言编写
51
单片机
程序
有
何不同?
2021-07-15
1673
如何去使用STM32
单片机
汇编
指令
呢
2021-11-26
1780
STM32需要学习他的
汇编
指令
吗?
2020-05-26
774
51
单片机
和STM32
有
什么区别
2021-01-06
3289
你
知道
ARM常用的
汇编
指令
有
哪些吗
2021-12-15
986
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分