汇编四、51单片机汇编指令2

news2024/9/28 17:34:09

1、机器码

(1)MOV A,#0x60对应机器码为7460

(2)7460对应二进制 0111 0100 0110 0000

0x74对应指令,0x60对应立即数。

(3)immediate data翻译为立即数。

(4)可人为查表把汇编转为机器码,也可通过编译器把汇编转为机器码。

2、汇编常见缩写

(1)Rn: n可取0~7,表示R0~R7其中的一个。

(2)Ri: i可取0或1,表示R0或R1。(间接寻址只能用Ri)

(3)Direct: 8位RAM的直接地址。 

(4)#data: 8位立即数 

(5)#data16: 16位立即数

(6)Rel: 偏移地址  

(7)Bit: 位地址  

(8)C: 进位标志位  

(9)@: 间接寻址

3、汇编指令功能分类

按功能分类,指令系统可分为:

(1)数据传送类指令;

(2)算数操作类指令;

(3)逻辑操作类指令;

(4)控制转移类指令;

(5)布尔变量操作类指令。

3.1、数据传送类指令

(1)51中没有此指令MOV Rn,Rn。(ARM中可以这样)

(2)MOV direct1,direcct2    ;两个直接地址可以进行数据的传递.

(3))MOVX 访问外部RAM, MOVC访问ROM。

(4)指令SWP A  ;A中的高低四位相互交换。

(5)出栈和入栈

  • PUSH direct    直接地址单元中的数据压入堆栈
  • POP direct     栈顶数据出栈送到直接地址单元
  • PUSH 和 POP 后面不能直接跟寄存器
  • 入栈顺序:栈顶指针SP加1,direct中数据压入栈顶指针所指的空间
  • 出栈顺序:栈顶指针所指数据放回direct地址中,SP减1
  • ACC表示寄存器A的地址,ACC等价于0xE0
  • A表示寄存器A

举例:

3.2、算数操作类指令

包含常见的加减乘除指令。

(1)ADD A, Rn    ;寄存器Rn中的值寄存器A中的值放到寄存器A中

(2)SUBB A, Rn    ;累加器带借位减寄存器内容。

(3)MUL  AB    ;A乘以B。低字节存放A,高字节存放在B

(4)DIV  AB    ;A除以B。商存放在A,余数放入B

(5)INC  direct    ;直接地址单元加1,不会影响进位标志位

(6)DEC  driect    ;直接地址单元减1,不会影响进位标志位

(7)DA  A    ;累加器十进制调整,使用16进制表示10进制

把寄存器A的值按照BCD码重新计算,高四位表示十进制的,低四位表示个位。

例如:0x3B = 3* 10 + 11 = 41

3.3、逻辑操作类指令

(1)ANL  A,  Rn    ;累加器与寄存器相“与”

(2)ORL  A, Rn    ;累加器与寄存器相"或"

(3)XRL  A, Rn    ;累加器与寄存器相"异或"

(4)CLR  A    ;累加器清“0”

(5)CPL  A    ;累加器求反

3.4、控制转移类指令

(1)计算机语言通常包含三种结构:顺序结构;选择结构;循环结构。

(2)ACALL  addr11    ;绝对(短调用子程序)

(3)LCALL  addr16    ;长调用子程序

(4)AJMP  addr11    ;绝对短转移

(5)LJMP  addr16    ;长转移

(6)LCALL用于调用子程序,LJMP用于绝对跳转。

(7)LJMP是绝对跳转;SJMP是相对跳转。

(8)JZ  rel    ;累加器为零转移

(9)JNZ  rel    ;累加器非零转移 

(10)以下两条常用于选择循环语句

        CJNE  A, direct, rel    ;累加器与直接地址单元比较,不相等则转移

        DJNZ  direct, rel    ;直接地址单元减1,非零转移

(11)NOP    ;空操作

3.5、布尔变量操作类指令

(1)根据51单片机内部结构:

        位寻址区为0x20~0x2F。每一个地址对应一个字节,一个字节对应8位,每一位都是可以位寻址的。

        举例:

        20.0:表示0x20地址的bit0,对应地址0x00

        20.1:表示0x20地址的bit1,对应地址0x01

        20.2:表示0x20地址的bit2,对应地址0x02......

(2)bit位地址0x00-0x7F用于位寻址区。

(3)位寻址地址与通常地址采用不同指令进行区分。

(4)MOV  C, bit    ;直接地址位送入进位位

(5)MOV  bit, C    ;进位位送入直接地址位

(6)特殊功能寄存器中,也有一部分是可位寻址的,一部分是不可位寻址的。

(7)bit位地址0x80-0xFF用于可以位寻址的特殊功能寄存器的位访问。

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

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

相关文章

leetcode-040-组合总和2

题目及测试 package pid040; /* 40. 组合总和 II 给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用 一次 。注意:解集不能包含重复的组合…

Vue中使用EasyPlayer播放H265视频流

需求说明 需要在Vue2的项目中使用EasyPlayer进行H265视频流的播放。使用官方的最新版本加载H265会有问题。一直处于加载中… 实现步骤 引入easyplayer,这里最开始引入了最新版会有问题,因此引入的是3.3.12版本,可参照官方文档进行配置。 EasyPlayer示…

HBase整合Phoenix

HBase整合Phoenix 创建软件目录 mkdir -p /opt/soft cd /opt/soft下载软件 wget https://dlcdn.apache.org/phoenix/phoenix-5.1.3/phoenix-hbase-2.5-5.1.3-bin.tar.gz解压 hbase tar -zxvf phoenix-hbase-2.5-5.1.3-bin.tar.gz修改 hbase 目录名称 mv phoenix-hbase-2.5…

(初)进程概念

目录 认识冯诺依曼系统 操作系统(Operator System) 设计OS的目的: 定位: 如何理解管理: 总结: 系统调用和库函数概念: 进程 基本概念 : 描述进程PCB task_struct - PCB的一种 task_struct内容分…

编译安装最新的Linux系统内核

现在还有不少机器是CentOS8 Stream系统,虽然上了贼船,不影响用就是了。8的编译和7大同小异,只是踩了更多的坑在这里记录一下,或许会帮到看到的朋友。 安装编译环境 CentOS8安装必要的包 yum groupinstall "Development Too…

【P13】JMeter 常数吞吐量定时器(Constant Throughput Timer)

文章目录 1、基于计算吞吐量:只有此线程2、基于计算吞吐量:所有活动线程3、基于计算吞吐量:当前线程组中的所有活动线程4、基于计算吞吐量:所有活动线程(共享)5、基于计算吞吐量:当前线程组中的…

【2023/05/08】雅卡尔织布机

Hello!大家好,我是霜淮子,2023倒计时第3天。 Share The world puts off its mask of vastness to its lover. It becomes small as one song,as one kiss of the eternal. 译文: 世界对着它的爱人,把它浩瀚的面具揭…

已做过算法题总结2

20. 有效的括号 (括号匹配是使用栈解决的经典问题,这道题主要是记住三种不成立的情况) 给定一个只包括 (,),{,},[,] 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用…

解密链表元素移除:三种巧妙思路,轻松驱逐难缠结点

本篇博客会讲解力扣“203. 移除链表元素”的解题思路,这是题目链接。 老规矩,先来审题: 以下是一些示例: 以下是提示: 本题的思路还挺多的,不过都是链表的常规操作。 思路1 万能的尾插法。遍历链表&am…

[Golang] 爬虫实战-用多层嵌套结构体去接收多层嵌套数据

😚一个不甘平凡的普通人,致力于为Golang社区和算法学习做出贡献,期待您的关注和认可,陪您一起学习打卡!!!😘😘😘 🤗专栏:算法学习 &am…

量子计算(10)编程实践2:隐形传态算法

目录 一、算法目的 二、算法原理 三、pyqpanda实现代码 四、测试结果 一、算法目的 量子隐形传态,又称量子遥传、量子隐形传输、量子隐形传送、量子远距传输或量子远传,是一种利用分散量子缠结与一些物理讯息的转换来传送量子态至任意距离的位置的技…

AutoSar CAN网络管理(CanNm)

文章目录 网络管理目的主动唤醒和被动唤醒状态管理1. 总线睡眠模式(Bus-Sleep Mode)2. 准备总线睡眠模式(Prepare Bus-Sleep Mode)3. 网络模式(Network Mode)3.1 重复报文状态(RepeatMessageState)3.2 常规…

基于springboot+mysql+jpa+html实现商品销售信息系统

基于springbootmysqljpahtml实现商品销售信息系统 一、系统介绍1、系统主要功能:2.涉及技术框架:3.本项目所用环境: 二、功能展示三、其它系统四、获取源码 一、系统介绍 1、系统主要功能: 订单管理模块 商品管理模块 品牌管理模…

【项目实战】—— 我们应该如何正确得创建线程池?

项目实战-我们应该如何正确得创建线程池? 对于现在而言多线程编程已经成为程序员必备的职业技能了,在开发实践过程中,你是否也遇到过相关多线程问题,比如创建多少线程才是合适的?线程池该如何创建?今天我们…

类和对象中(2)

文章目录 一、运算符重载1、运算符重载出现的原因2、在全局和类里实现运算符重载3、赋值运算符重载1、为什么赋值运算符重载不能写在全局 ?2、什么时候需要自己实现赋值运算符重载 ? 4、前置和后置重载5、运算符重载的优势 二、const成员函数1、两个常见…

GNN与MLP:GNN是一种泛化器

图神经网络(GNN)作为图表示学习的模型,建立在MLP架构之上,具有额外的消息传递,以允许特征在节点之间流动。作者通过引入一个被称为P-MLP的中间模型,将GNN性能增益的主要来源定位为其内在的泛化能力&#xf…

JSR303统一校验和分组校验及常用注解@NotBlank@NotEmpty 的使用

JSR303-bean校验规范 JSR303常用注解,下面注解在JavaBean的字段上使用,必须在方法上搭配Vaild才会开启校验,也可以设置分组校验 Null 必须为空 主键字段常用,可以规定新增时字段必须为空NotNull 不能为null 添加数字时使用常用&…

前端学习笔记:CSS中浮动的原理,定位

这是本人学习的总结,主要学习资料如下 马士兵教育 目录 1、float1.1、float设计的初衷1.2、浮动的原理,类似两个图层1.3、浮动的原理,两个图层的特殊性1.4、消除浮动的影响 2、定位2.1、相对定位(relative)2.2、绝对定…

CSS var()的使用

最近在做流量对比的功能,有如下的效果图,当某个节点失败的时候,点击能够弹出对应的提示信息。 这个库使用的是jenkins-pipeline 的库, 但是由于它原本的提示框比较糟糕,所以我们想结合antd的tooltip进行展示&#xff0…

CM211-1-ZG-当贝纯净桌面-线刷固件包-

CM211-1-ZG-当贝纯净桌面-线刷固件包-内有教程及短接点 特点: 1、适用于对应型号的电视盒子刷机; 2、开放原厂固件屏蔽的市场安装和u盘安装apk; 3、修改dns,三网通用; 4、大量精简内置的没用的软件,运…