汇编

news2024/11/15 5:05:18

汇编指令

  • 随机数
  • mov指令
  • mov指令
  • ldr指令(伪指令)
  • add指令
  • sub指令
  • bic指令
  • orr指令
  • b指令
  • cmp指令
  • stmfd指令
  • ldmfd指令
  • import
  • 汇编指令的s后缀

随机数

1.如果某个数的数值范围是0~255之间,那么这个数一定是立即数;
2.把某个数展开成2进制,这个数的最高位1至最低位1之间的二进制数序列的位数不能超过8位;
3.这个数的二进制序列的右边必须为偶数个连续的 0

mov指令

mov指令:加载12位立即数到寄存器或转移一个寄存器的值到另外一个寄存器

1.mov r0, #2 ;加载立即数2到寄存器r0,MOV{S}<c> <Rd>, #<const>
2.mov r1, r0 ;将r0寄存器的值加载到r1,MOV{S}<c> <Rd>, <Rm>

大多数指令的格式为opcode rd, rn ,rm,其中,rd是目标寄存器,rn是第一操作数寄存器

mov指令

mov指令:按位取反立即数并将该数写入寄存器中

ldr指令(伪指令)

向目标地址的内存中加载数据到某个寄存器
ldr r0, =0x1FF

mov r0, #0x4000 0000
ldr r1, [r0, #4]
			  #4偏移量

add指令

add指令常用的两种方式

ADD{S}<c> <Rd>, <Rn>, #<const> : 将#随机数 和寄存器Rn中的值相加存入Rd寄存器中
ADDS}<c> <Rd>, <Rn>, <Rm>{, <shift>}:将Rn寄存器和Rm中的值相加存入Rd寄存器中

sub指令

1.SUB{S}<c> <Rd>, <Rn>, #<const> :将Rn寄存器中的值和#随机数相减存入寄存器Rd中
2.SUB{S}<c> <Rd>, <Rn>, <Rm>{, <shift>}:将Rn中的值和Rm中的值相减存入Rd中

bic指令

指定位清零
bic r1, r0, #(1<<0) 将r0中数据为1的位数清零后 存入r1中

orr指令

指定位置一
orr r1, r0, #(1<<0)

b指令

1.b 跳转至目标指令
2.bl 跳转至目标指令 并且保存pc的值到LR中
3.bx(pc) lr 将lr中的值装入pc中
4.blx

cmp指令

cmp r0, r1 (r0-r1)

stmfd指令

stmfd sp!, {r0 - r12, …}
入栈保护

ldmfd指令

ldmfd sp!, {r0-r12, …}
出栈

import

import c语言函数入口地址
bl fn
参数由寄存器传递
如果参数超过五个 由栈传参
如果函数有返回值 将存入r0返回
push{r0} 入栈
pop{r0} 出栈

增栈:指针向地址增加方向移动
减栈:指针向地址减小方向移动
满栈:先移动再写入
空栈:先写入再移动
ARM中为满减栈

汇编指令的s后缀

在这里插入图片描述

汇编指令的s后缀,几乎所有的汇编指令都可以在指令后面加上s后缀,s后缀的含义是在指令执行过程中会更新cpsr寄存器的N,V,C,Z位

N:在结果是有符号的二进制补码情况下,如果结果为负数,则N=1;如果结果为非负数,则N=0
Z:如果结果为0,则Z=1;如果结果为非零,否则Z=0
C:是针对无符号数最高有效位向更高位进位时C=1;减法中运算结果的最高有效位从更高位借位时C=0
V:该位是针对有符号数的操作,会在下面两种情形变为1,两个最高有效位均为0的数相加,得到的结果最高有效位为1;两个最高有效位均为1的数相加,得到的结果最高有效位为0;除了这两种情况以外V位为0

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

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

相关文章

树与图的宽度优先遍历

大致思想请参照添加链接描述该篇博客 主要地方的差异就是&#xff1a; 宽度优先遍历就是一层一层的搜索 图中数的层次题目 给定一个 n个点 m条边的有向图&#xff0c;图中可能存在重边和自环。 所有边的长度都是 1&#xff0c;点的编号为 1∼n。 请你求出 1号点到 n号点的…

C++风格指南 2、作用域

2.1. 命名空间 这段文字的关键内容概括如下&#xff1a; 1. 命名空间的使用&#xff1a;除了少数特殊情况外&#xff0c;代码应在命名空间内&#xff0c;命名空间名称应唯一&#xff0c;包含项目名和可选的文件路径。 2. 禁止使用&#xff1a; - using 指令引入整个命名空…

实验17:直流电机实验

硬件接线图; 我这里实现的是&#xff1a;转5s&#xff0c;停5s&#xff0c;循环 main.c #include<reg52.h>typedef unsigned int u16; typedef unsigned char u8;sbit ZLP1^0;void delay_10us(u16 n) {while(n--); }void delay_ms(u16 ms) {u16 i,j;for(ims;i>0;i--…

Python中8个让你成为调试高手的技巧

文末赠免费精品编程资料~~ 调试技能是每一位开发者不可或缺的利器。它不仅能帮你迅速定位并解决代码中的bug&#xff0c;还能提升你的编程效率&#xff0c;让你的代码更加健壮。今天&#xff0c;我们就来揭秘10个让你从新手进阶为调试高手的秘诀。 1. 使用print()函数——基础…

AIoTedge边缘物联网平台发布,更低的价格,更强大的功能

AIoTedge是一个创新的AI边缘计算平台&#xff0c;专为满足现代物联网&#xff08;IoT&#xff09;需求而设计。它采用了边云协同的架构&#xff0c;能够实现多点部署&#xff0c;并与IoT云平台无缝配合&#xff0c;提供分布式的AIoT处理能力。这种设计特别适合需要AI云端训练和…

高效率伪原创检测,6款工具为你轻松搞定

在内容创作领域&#xff0c;原创性是衡量作品价值的重要标准之一。然而&#xff0c;创作高质量的原创内容不仅需要灵感和创意&#xff0c;还需要大量的时间和精力。为了提高效率&#xff0c;许多创作者和编辑开始寻求伪原创检测工具的帮助&#xff0c;以确保他们的作品在保持独…

pat1097链表去重 | pat1133链表元素分类 【完结】

pat1097链表去重 与之前不同的是&#xff0c;需要把删掉的元素也拍成一个链表 分类讨论你就好好的分 如果重复了——pre不动&#xff0c;pre的next指向cur的next&#xff0c;然后在已删除中加上一个节点&#xff0c;状态移至下个节点&#xff08;最后完了记得加上-1&#xf…

C语言05--指针初识

内存地址 字节&#xff1a;字节是内存的容量单位&#xff0c;英文称为 byte&#xff0c;一个字节有8位&#xff0c;即 1byte 8bits地址&#xff1a;系统为了便于区分每一个字节而对它们逐一进行的编号&#xff0c;称为内存地址&#xff0c;简称地址。注:地址是按字节编号的&a…

多模态YOLOv8 融合可见光+红外光(RGB+IR)双输入【附代码】

文章目录 前言视频效果代码获取文章概述必要环境一、模型训练1、 定义数据1.1、数据集结构1.2、定义data.yaml 2、 运行方法运行效果 二、模型验证运行方法运行效果 三、模型推理1. 参数定义2. 运行方法运行效果 四、效果展示白天夜间 总结 前言 最近看不少朋友提到双模态YOLO…

基于SpringBoot的健康饮食管理系统---附源码98382

目 录 1 绪论 1.1 研究背景与意义 1.2国内外研究现状 1.3论文结构与章节安排 2 系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 法律可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 系统用例分析 2.4 系统流程…

什么是营销自动化?营销自动化的优势?

在SaaS行业和软件行业中&#xff0c;营销自动化作为一种先进的营销手段&#xff0c;正逐渐受到企业的青睐。营销自动化基于大数据和人工智能技术&#xff0c;能够自动执行、管理和完成营销任务和流程&#xff0c;为企业带来诸多优势。 营销自动化是一种能够一体化执行、管理、…

SecretPixel:一款整合了多种技术的高级图像隐写工具

关于SecretPixel SecretPixel是一款先进的隐写术工具&#xff0c;旨在安全地隐藏图像中的敏感信息。它结合了先进的加密、压缩和种子最低有效位 (LSB) 技术&#xff0c;为隐藏数据提供了一种不可检测的强大解决方案&#xff0c;在数字隐写术领域脱颖而出。 功能介绍 1、高级加…

2024 Python3.10 系统入门+进阶(七):字符串及其常用操作详解上篇

目录 一、初始化二、索引三、常用操作3.1 拼接字符串3.1.1 ""号3.1.2 join()方法 3.2 检索字符串3.2.1 find() 方法——字符串首次出现的索引位置(rfind()、index()、rindex())3.2.2 count() 方法——统计字符串出现次数3.2.3 len() 函数——计算字符串长度或元素个数…

RabbitMQ的高可用

1.Rabbit集群 采用集群模式保护消息的完整。 1.1普通集群 在普通集群模式下&#xff0c;各个节点之间有相同的元数据&#xff0c;即队列结构&#xff0c;而消息不会冗余&#xff08;不同节点的消息不同&#xff09;。 消费时&#xff0c;如果消费的不是存有数据的节点&…

如何用Python进行民宿数据分析:一步步教你实现可视化

&#x1f34a;作者&#xff1a;计算机毕设匠心工作室 &#x1f34a;简介&#xff1a;毕业后就一直专业从事计算机软件程序开发&#xff0c;至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长&#xff1a;按照需求定制化开发项目…

基于swifter多内核的加速Pandas DataFrame操作运行

swifter是提高pandas性能的第三方包,主要是apply函数。 接口支持范围: 运行环境和安装 操作系统是Win10 64,pandas版本是2.2.2,swifter版本是1.4.0。 pip安装 $ pip install -U pandas # upgrade pandas $ pip install swifter # first time installation $ pip inst…

Android 架构模式之 MVVM

Android 架构 Android 架构模式之 MVCAndroid 架构模式之 MVPAndroid 架构模式之 MVVM 目录 Android 架构架构设计的目的对 MVVM 的理解代码ModelViewViewModel Android 中 MVVM 的问题试吃个小李子BeanModelViewViewModel效果展示 大家好&#xff01; 作为 Android 程序猿&a…

大数据ETL工具(Sqoop, DataX, Kettle)对比

文章目录 1. ETL简介2. Sqoop2.1 Sqoop简介2.2 Sqoop主要特点 3. DataX3.1 DataX简介3.2 DataX框架设计3.3 DataX的主要特点 4. Kettle4.1 Kettle简介4.2 Kettle的主要特点 5. 工具对比5.1 DataX 与 Sqoop对比5.2 DataX 与 Kettle 6. 总结 1. ETL简介 ETL&#xff08;Extract-…

Mamba来搞图像增强了!高创新,发小论文不愁!

用Mamba做图像增强是个创新性比较高的方向&#xff0c;因为Mamba拥有非常独特的架构设计&#xff0c;能够同时捕获全局和局部的信息&#xff0c;轻松助力模型理解图像的整体结构和上下文&#xff0c;帮助我们确保图像细节的准确恢复和增强。 这种优势让它在保持高效计算的同时…

MySQL主从复制重新初始化单表或者单库的方法

作者介绍&#xff1a;老苏&#xff0c;10余年DBA工作运维经验&#xff0c;擅长Oracle、MySQL、PG、Mongodb数据库运维&#xff08;如安装迁移&#xff0c;性能优化、故障应急处理等&#xff09; 公众号&#xff1a;老苏畅谈运维 欢迎关注本人公众号&#xff0c;更多精彩与您分享…