51单片机汇编指令表--STC宏晶MCU

这篇具有很好参考价值的文章主要介绍了51单片机汇编指令表--STC宏晶MCU。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

51单片机汇编指令表–STC宏晶MCU


51单片机汇编指令简介

51系列单片机汇编指令表非常庞大,包含了五大类指令,以下是各类指令的一个简要概述和部分示例:

一、数据传送类指令

这些指令用于在寄存器之间、寄存器与存储单元之间以及立即数与寄存器之间的数据传输。

  • MOV:通用数据传送指令
    • MOV A,Rn 将工作寄存器Rn的内容传送到累加器A中。
    • MOV direct,A 将累加器A的内容传送到直接地址指定的内部RAM单元。
    • MOVX A,@Ri (对于访问外部RAM)通过间接寻址将外部RAM中的内容传送到累加器A(其中Ri为R0或R1)。
    • MOVX @DPTR,A 向外部RAM以DPTR指向的地址写入累加器A的内容。

二、算术操作类指令

包括加法、减法、比较等操作。

  • ADD、ADDC:对累加器进行加法运算。
  • SUBB:带借位的减法运算。
  • INC、DEC:递增或递减指定寄存器或内存单元的值。

三、逻辑运算类指令

涉及逻辑与、或、异或等操作。

  • ANL(AND Logical):按位逻辑与操作。
  • ORL(OR Logical):按位逻辑或操作。
  • XRL(Exclusive OR Logical):按位逻辑异或操作。

四、控制转移类指令

用于程序流程控制,如条件跳转和无条件跳转。

  • JMP:无条件跳转到指定地址。
  • AJMP、LJMP:短跳转和长跳转到子程序或其他地址。
  • JC、JNC、JZ、JNZ 等:根据标志位状态进行条件转移。

五、位操作类指令

处理单个位的操作。文章来源地址https://www.toymoban.com/news/detail-789257.html

  • SETB:设置一个位为1。
  • CLR:清零一个位。
  • CPL:取反一个位。
  • JB(Jump if Bit Set)、JNB(Jump if Bit Not Set):依据某位的状态进行跳转。
    以上只是简单的举例,并未列出所有51单片机的汇编指令。每条指令的具体格式、功能和使用情况可以参考完整的MCS-51汇编语言手册。

宏晶MCU-STC8Hxx

算术运算

助记符 指令说明 字节 时钟
ADD A,Rn 寄存器内容加到累加器 1 1
ADD A,direct 直接地址单元的数据加到累加器 2 1
ADD A,@Ri 间接地址单元的数据加到累加器 1 1
ADD A,#data 立即数加到累加器 2 1
ADDC A,Rn 寄存器带进位加到累加器 1 1
ADDC A,direct 直接地址单元的数据带进位加到累加器 2 1
ADDC A,@Ri 间接地址单元的数据带进位加到累加器 1 1
ADDC A,#data 立即数带进位加到累加器 2 1
SUBB A,Rn 累加器带借位减寄存器内容 1 1
SUBB A,direct 累加器带借位减直接地址单元的内容 2 1
SUBB A,@Ri 累加器带借位减间接地址单元的内容 1 1
SUBB A,#data 累加器带借位减立即数 2 1
INC A 累加器加1 1 1
INC Rn 寄存器加1 1 1
INC direct 直接地址单元加1 2 1
INC @Ri 间接地址单元加1 1 1
DEC A 累加器减1 1 1
DEC Rn 寄存器减1 1 1
DEC direct 直接地址单元减1 2 1
DEC @Ri 间接地址单元减1 1 1
INC DPTR 地址寄存器DPTR加1 1 1
MUL AB A乘以B,B存放高字节,A存放低字节 1 2
DIV AB A除以B,B存放余数,A存放商 1 6
DA A 累加器十进制调整 1 3

逻辑运算

助记符 指令说明 字节 时钟
ANL A,Rn 累加器与寄存器相与 1 1
ANL A,direct 累加器与直接地址单元相与 2 1
ANL A,@Ri 累加器与间接地址单元相与 1 1
ANL A,#data 累加器与立即数相与 2 1
ANL direct,A 直接地址单元与累加器相与 2 1
ANL direct,#data 直接地址单元与立即数相与 3 1
ORL A,Rn 累加器与寄存器相或 1 1
ORL A,direct 累加器与直接地址单元相或 2 1
ORL A,@Ri 累加器与间接地址单元相或 1 1
ORL A,#data 累加器与立即数相或 2 1
ORL direct,A 直接地址单元与累加器相或 2 1
ORL direct,#data 直接地址单元与立即数相或 3 1
XRL A,Rn 累加器与寄存器相异或 1 1
XRL A,direct 累加器与直接地址单元相异或 2 1
XRL A,@Ri 累加器与间接地址单元相异或 1 1
XRL A,#data 累加器与立即数相异或 2 1
XRL direct,A 直接地址单元与累加器相异或 2 1
XRL direct,#data 直接地址单元与立即数相异或 3 1
CLR A 累加器清0 1 1
CPL A 累加器取反 1 1
RL A 累加器循环左移 1 1
RLC A 累加器带进位循环左移 1 1
RR A 累加器循环右移 1 1
RRC A 累加器带进位循环右移 1 1
SWAP A 累加器高低半字节交换 1 1

数据传输

助记符 指令说明 字节 时钟
MOV C,bit 直接地址位送入进位位 2 1
MOV bit,C 进位位送入直接地址位 2 1
MOV A,Rn 寄存器内容送入累加器 1 1
MOV A,direct 直接地址单元中的数据送入累加器 2 1
MOV A,@Ri 间接地址中的数据送入累加器 1 1
MOV A,#data 立即数送入累加器 2 1
MOV Rn,A 累加器内容送入寄存器 1 1
MOV Rn,direct 直接地址单元中的数据送入寄存器 2 1
MOV Rn,#data 立即数送入寄存器 2 1
MOV direct,A 累加器内容送入直接地址单元 2 1
MOV direct,Rn 寄存器内容送入直接地址单元 2 1
MOV direct,direct 直接地址单元中的数据送入另一个直接地址单元 3 1
MOV direct,@Ri 间接地址中的数据送入直接地址单元 2 1
MOV direct,#data 立即数送入直接地址单元 3 1
MOV @Ri,A 累加器内容送间接地址单元 1 1
MOV @Ri,direct 直接地址单元数据送入间接地址单元 2 1
MOV @Ri,#data 立即数送入间接地址单元 2 1
MOV DPTR,#data16 16位立即数送入数据指针 3 1
MOVC A,@A+DPTR 以DPTR为基地址变址寻址单元中的数据送入累加器 1 4
MOVC A,@A+PC 以PC为基地址变址寻址单元中的数据送入累加器 1 3
MOVX A,@Ri 扩展地址(8位地址)的内容送入累加器A中 1 3[1]
MOVX A,@DPTR 扩展RAM(16位地址)的内容送入累加器A中 1 2[1]
MOVX @Ri,A 将累加器A的内容送入扩展RAM(8位地址)中 1 3[1]
MOVX @DPTR,A 将累加器A的内容送入扩展RAM(16位地址)中 1 2[1]
PUSH direct 直接地址单元中的数据压入堆栈 2 1
POP direct 栈底数据弹出送入直接地址单元 2 1
XCH A,Rn 寄存器与累加器交换 1 1
XCH A,direct 直接地址单元与累加器交换 2 1
XCH A,@Ri 间接地址与累加器交换 1 1
XCHD A,@Ri 间接地址的低半字节与累加器交换 1 1

布尔操作

助记符 指令说明 字节 时钟
CLR C 清零进位位 1 1
CLR bit 清0直接地址位 2 1
SETB C 置1进位位 1 1
SETB bit 置1直接地址位 2 1
CPL C 进位位求反 1 1
CPL bit 直接地址位求反 2 1
ANL C,bit 进位位和直接地址位相与 2 1
ANL C,/bit 进位位和直接地址位的反码相与 2 1
ORL C,bit 进位位和直接地址位相或 2 1
ORL C,/bit 进位位和直接地址位的反码相或 2 1
JC rel 进位位为1跳转 2 1/3[2]
JNC rel 进位位为0跳转 2 1/3[2]
JB bit,rel 直接地址位为1则跳转 3 1/3[2]
JNB bit,rel 直接地址位为0则跳转 3 1/3[2]
JBC bit,rel 直接地址位为1则跳转,该位清0 3 1/3[2]

程序分支

助记符 指令说明 字节 时钟
ACALL addr11 短调用子程序 2 3
LCALL addr16 长调用子程序 3 3
RET 子程序返回 1 3
RETI 中断返回 1 3
AJMP addr11 短跳转 2 3
LJMP addr16 长跳转 3 3
SJMP rel 相对跳转 2 3
JMP @A+DPTR 相对于DPTR的间接跳转 1 4
JZ rel 累加器为零跳转 2 1/3[2]
JNZ rel 累加器非零跳转 2 1/3[2]
CJNE A,direct,rel 累加器与直接地址单元不相等跳转 3 2/3[3]
CJNE A,#data,rel 累加器与立即数不相等跳转 3 1/3[2]
CJNE Rn,#data,rel 寄存器与立即数不相等跳转 3 2/3[3]
CJNE @Ri,#data,rel 间接地址单元与立即数不相等跳转 3 2/3[3]
DJNZ Rn,rel 寄存器减1后非零跳转 2 2/3[3]
DJNZ direct,rel 直接地址单元减1后非零跳转 3 2/3[3]
NOP 空操作 1 1
  • 1、访问外部扩展 RAM 时,指令的执行周期与寄存器 BUS_SPEED 中的 SPEED[2:0]位有关
  • 2、对于条件跳转语句的执行时间会依据条件是否满足而不同。当条件不满足时,不会发生跳转而继续执行下一条指令,此时条件跳转语句的执行时间为 1 个时钟;当条件满足时, 则会发生跳转,此时条件跳转语句的执行时间为 3 个时钟。
  • 3、对于条件跳转语句的执行时间会依据条件是否满足而不同。当条件不满足时,不会发生跳转而继续执行下一条指令,此时条件跳转语句的执行时间为 2 个时钟;当条件满足时,则会发生跳转,此条件跳转语句的执行时间为 3 个时钟

到了这里,关于51单片机汇编指令表--STC宏晶MCU的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 51汇编单片机学习(三)八路流水灯

    流水灯主要是在小灯闪烁的基础上对小灯进行移动 八路流水则为赋值一组引脚并对引脚进行定义,在上一篇文章我们能知道当引脚置1时为高电平,此时小灯不亮,引脚置0时,低电平,小灯亮,所以可知在一组引脚中,可设置小灯初始位置从“01111111”开始亮起,而十六进制

    2024年02月07日
    浏览(53)
  • STC51单片机学习9--DS18B20温度传感器

    DS18B20是Dallas半导体公司的一款数字温度传感器芯片; DS18B20是一款支持 1-wire总线接口的温度传感器; DS18B20能测量的温度范围-55℃--125℃,精度是±0.5℃; DS18B20可以将分辨率设定为9到12位; DS18B20的工作电压范围3--5.5V 单片机的P4.1引脚用来接DS18B20的数据引脚 以下是友台半导体

    2024年02月12日
    浏览(53)
  • 【STC89C52】学习51单片机的必备电子电路知识基础

    电子电路是学习51单片机的基础, 如果能把以下几个模块弄清楚学习51单片机就不成问题啦。 目录 1.电平 2.单片机IO口 3.电阻 4.电容  5.电路原理图 ​编辑 6.单片机最小系统结构  7.单片机工作的基本时序 单片机是一种数字集成芯片,数字电路中只有高电平和低电平。 单片

    2023年04月26日
    浏览(66)
  • STC51单片机解码433M程序说明

    最近需要用到433M的单片机解码,上网搜了一下。大部分的程序都是基于定时器定时检测。感觉逻辑不够严谨。对于新手理解起来也比较困难。 查看EV1527手册 我是用的240K电阻。得到了每个数据宽度是1.29MS,每个数据宽度为16个LCK,每个LCK宽度大约为80us, 可以算出同步位的高

    2024年02月11日
    浏览(46)
  • 汇编十四、51单片机汇编代码规范

    (1)提高源程序的质量和可维护性,从而提高生产力。 (1)常量C;  (2)变量R;  (3)位变量B; (4)标号L; (5)子程序F;  (6)表T;  (7)中断T; (8)函数F... 举例:F_UartSendByte (1)ORG (2)END (3)EQU (4)BIT (5)DS (1)寄存器不能嵌套使用 (2)中断服务程序切换寄存器区(RS0,RS1),这样保护现场就不用保

    2024年02月07日
    浏览(72)
  • stc89C51系列单片机介绍

    STC89C51 是一款基于 8051 内核的高性价比单片机,由国内的 STC 微电子公司生产。STC89C51 系列单片机的特点是具有高速运行、丰富的外设接口、广泛的应用领域等优点。本文将从以下几个方面介绍 STC89C51 系列单片机。 STC89C51 系列单片机基于 80C51 内核,具有 1T 和 2T 两种不同的时

    2024年02月01日
    浏览(54)
  • 单片机指令合集(汇编)

    (1)数据传送类指令(7种助记符)         MOV(英文为Move):对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送;         MOVC(Move Code)读取程序存储器数据表格的数据传送;         MOVX (Move External RAM) 对外部RAM的数据传送;         XCH (Exchange) 字节

    2024年02月04日
    浏览(45)
  • 51单片机(STC8) -- 开发环境搭建(Keil C51)

    STC8H3K系列芯片概述 文章中所用的芯片选型为STC8H3K64S4,后续STC8案例均以该芯片展开 内核 • 超高速 8051 内核(1T),比传统 8051 约快 12 倍以上,指令代码完全兼容传统8051 • 21个中断源,4 级中断优先级 • 支持在线仿真 工作电压 • 1.9V~5.5V 工作温度 • -40℃~85℃ Flash 存储

    2024年01月25日
    浏览(52)
  • MCU-51:单片机LCD1602详解

    LCD1602(Liquid Crystal Display)液晶显示屏是一种字符型液晶显示模块,可以显示ASCII码的标准字符和其它的一些内置特殊字符,还可以有8个自定义字符 显示容量:16×2个字符,每个字符为5*7点阵 点阵图形式液晶由M×N个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应

    2023年04月09日
    浏览(89)
  • 51单片机定时器实验(汇编)

    基于AT89C51的定时器实验,汇编语言,分享出来是希望各位能共同学习。附上注释希望能认真研究,若有错误请指出,谢谢。 一、实验目的 掌握单片机定时器的使用方法。 掌握中断的使用方法。 二、实验内容 采用中断方式控制定时器。使得单片机P1.0引脚产生周期为1S的方波

    2024年02月11日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包