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 等:根据标志位状态进行条件转移。

五、位操作类指令

处理单个位的操作。

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

宏晶MCU-STC8Hxx

算术运算

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

逻辑运算

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

数据传输

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

布尔操作

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

程序分支

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/612112.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2645. 构造有效字符串的最少插入数

Problem: 2645. 构造有效字符串的最少插入数 文章目录 思路解题方法复杂度Code 思路 决定开头的差距;决定中间的补足决定末尾的差距; 解题方法 开头的位置对于a不做处理,b则做出加一的处理,c则是加二的处理方法;中间的…

Guava:Strings 字符串处理工具

简介 String 或 CharSequence 实例有关的静态实用程序方法。 类方法说明 官方文档:Strings (Guava: Google Core Libraries for Java 27.0.1-jre API) 方法名称方法说明commonPrefix(CharSequence a, CharSequence b) 返回共同的前缀字符串.commonSuffix(CharSe…

vscode文件配置

lanuch.json {"version": "0.2.0","configurations": [{"name": "(gdb) 启动","type": "cppdbg","request": "launch",// "program": "输入程序名称,例…

C#基础:通过QQ邮件发送验证码到指定邮箱

一、控制台程序 using System; using System.Net; using System.Net.Mail;public class EmailSender {public void SendEmail(string toAddress, string subject, string body){// 设置发件人邮箱地址以及授权码string fromAddress "xxxxxqq.com";string password …

频率阈图像滤波

介绍 频率阈图像滤波是一种在频域中进行图像处理的方法,它基于图像的频率分布来实现滤波效果。具体步骤如下: 将原始图像转换到频域:使用快速傅里叶变换(FFT)将图像从空间域转换到频域。对频域图像应用频率阈滤波器&a…

CSS3背景样式详解(图像大小,图像位置等)

背景样式 在CSS3中,新增了3个背景属性 属性说明background-size背景大小background-origin背景位置background-clip背景剪切 background-size属性 概念:在CSS3之前,我们是不能用CSS来控制背景图片大小的,背景图片的大小都是由…

深入理解 Flink(三)Flink 内核基础设施源码级原理详解

Hadoop 生态各大常见组件的 RPC 技术实现 Flink RPC 网络通信框架 Akka 详解 1、ActorSystem 是管理 Actor 生命周期的组件,Actor 是负责进行通信的组件。 2、每个 Actor 都有一个 MailBox,别的 Actor 发送给它的消息都首先储存在 MailBox 中&#xff0c…

Tomcat-快速使用

关于Tomcat的概念及来由在Tomcat基本知识中进行了介绍,下面我们直接上手快速使用起来。 一、快速使用 (1)tomcat下载 (2)解压缩 (3)启动程序 (4)访问tomcat&#xff1a…

Serverless 开拓无服务器时代:云计算的新趋势(下)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

二级C语言备考2

一、单选 共40题 (共计40分) 第1题 (1.0分) 题号:6951 难度:较易 第1章 以下叙述中错误的是 A:算法正确的程序可以有零个输入 B:算法正确的程序最终一定会结束 C:算法正确的程序可以有零个输出 D:算…

精华整理几十个Python数据科学、机器学习、深度学习、神经网络、人工智能方面的核心库以及详细使用实战案例,轻松几行代码训练自己的专有人工智能模型

精华整理几十个Python数据科学、机器学习、深度学习、神经网络、人工智能方面的核心库以及详细使用实战案例,轻松几行代码训练自己的专有人工智能模型。 机器学习 人工智能的核心,是使计算机具有智能的根本途径。机器学习专注于算法,允许机器学习而不需要编程,并在暴露于新…

OpenHarmony之编译构建使用指导

目录结构 /build # 编译构建主目录├── __pycache__ ├── build_scripts/ # 编译相关的python脚本 ├── common/ ├── config/ # 编译相关的配置项 ├─…

FlinkAPI开发之窗口(Window)

案例用到的测试数据请参考文章: Flink自定义Source模拟数据流 原文链接:https://blog.csdn.net/m0_52606060/article/details/135436048 窗口的概念 Flink是一种流式计算引擎,主要是来处理无界数据流的,数据源源不断、无穷无尽。…

10个提高 Python Web 开发效率的VS Code插件

VS Code具有灵活、便捷和丰富的可用插件库,是Web开发人员中非常受欢迎的代码编辑器。 本文介绍10个VS Code插件,它们可以提高你作为Web开发人员的工作效率。 1. Live Preview Live Preview插件支持在VS Code的小型浏览器中查看网站。因此,无…

数据库基础5

基本连接语句 教程 https://www.bilibili.com/video/BV1pw41147jm 导jar包 https://blog.csdn.net/qq_40893824/article/details/129118784 import java.sql.*;public class test {public static void main(String[] args) throws SQLException {//用户信息和urlString url …

【LeetCode2696】删除子串后的字符串最小长度

1、题目描述 【题目链接】 标签:栈 、字符串、模拟 难度:简单 给你一个仅由 大写 英文字符组成的字符串 s 。 你可以对此字符串执行一些操作,在每一步操作中,你可以从 s 中删除 任一个 “AB” 或 “CD” 子字符串。 通过执行操作…

pytorch导出onnx时遇到不支持的算子怎么解决

在使用pytorch模型训练完成之后,我们现在使用的比较多的一种方法是将pytorch模型转成onnx格式的模型中间文件,然后再根据使用的硬件来生成具体硬件使用的深度学习模型,比如TensorRT。 在从pytorch模型转为onnx时,我们可能会遇到部…

Vue面试之组件通信的方式总结(上篇)

Vue面试之组件通信的方式总结 props父子组件传参props父组件向子组件传参数组形式对象的简单形式对象的复杂形式 props子组件向父组件传参通过传递方法的形式通过传递事件的形式 插槽默认插槽具名插槽作用域插槽 最近在整理一些前端面试中经常被问到的问题,分为vue相…

go 语言常见问题(1)

1. 使用值为 nil 的 slice、map会发生啥 允许对值为 nil 的 slice 添加元素,但对值为 nil 的 map 添加元素,则会造成运行时 panic。 func main() {// slice 正确示例var s []ints append(s, 1)// map 错误示例var m map[string]intm["one"]…

ChatGPT3.5、GPT4.0、DALL·E 3和Midjourney对话与绘画智能体验

MidTool(https://www.aimidtool.com/)是一个集成了多种先进人工智能技术的助手,它融合了ChatGPT3.5、GPT4.0、DALLE 3和Midjourney等不同的智能服务,提供了一个多功能的体验。下面是这些技术的简要介绍: ChatGPT3.5&am…