当前位置: 首页 > news >正文

ARM 汇编指令作业(求公约数、for循环实现1-100之间和、从SVC模式切换到user模式简单写法)

1、求两个数最大公约数

.text
.globl _start_start:mov r0, #9mov r1, #15
Loop:               @ 循环cmp r0,r1       @ 比较r0和r1的大小beq stop        @ 当r0和r1相等时,跳到stop标签subhi r0,r0,r1  @ r0-r1>0 时,证明r0>r1,将r0-r1的值赋给r0,否则不执行subcc r1,r1,r0  @ r1-r0>0 时,证明r1>r0,将r1-r0的值赋给r1,否则不执行b Loop          @ 跳转到Loop标签下的第一条指令,达到循环效果
stop:b stop	
.end

2、用for循环实现1-100之间和

C:

for(i=1;i<=100;i++)
{sum = sum + i;
}

汇编:

.text
.globl _start_start:mov r0, #1         @ i,i=1mov r1, #100       @ 条件变量i<=100mov r2, #0         @ sumLoop:                  @ 循环cmp r0,r1          @ 比较r0和r1的大小bhi stop           @ 当r0>r1时,跳到stop标签add r2,r2,r0       @ r2 = r2 + r0  ---> sum=sum+iadd r0,#(0x1 << 0) @ i++b Loop             @ 跳转到Loop标签下的第一条指令,达到循环效果stop:b stop	
.end

3、从SVC模式切换到user模式简单写法

cpsr = 0xD0 ====> user模式

.text
.globl _start_start:msr cpsr,0xD0
stop:b stop	
.end
http://www.lryc.cn/news/172604.html

相关文章:

  • Go - 【字符串,数组,哈希表】常用操作
  • vue 普通组件的 局部注册
  • 医疗虚拟仿真和虚拟现实有什么区别?哪个更好?
  • 【.net core】yisha框架使用nginx代理swagger接口无法访问问题
  • uniapp录音功能和音频播放功能制作
  • 服务器数据恢复-LINUX操作系统下各文件系统误删除/格式化数据的恢复方案
  • python/C++二分查找库函数(lower_bound() 、upper_bound,bisect_left,bisect_right)
  • 爬虫 — App 爬虫(二)
  • 汽车电子相关术语
  • Python 找出最大数
  • Spring Security 用了那么久,你对它有整体把控吗?
  • vue+minio实现文件上传操作
  • 使用JavaScript实现无限滚动的方法
  • html学习综合案例1
  • 神经节苷脂抗体——博迈伦
  • 【Unity】简单的深度虚化shader
  • 启动 React APP 后经历了哪些过程
  • 带自动采集小说网站源码 小说听书网站源码 小说网站源码 带教程
  • MySQL学习笔记2
  • 【python爬虫】—星巴克产品
  • 算法 矩阵最长递增路径-(递归回溯+动态规划)
  • 四、数学建模之图与网络模型
  • php在header增加key,sign,timestamp,实现鉴权
  • Spring实例化源码解析之ConfigurationClassParser(三)
  • 在 Substance Painter中实现Unity Standard Shader
  • 第二证券:个人开证券账户要开户费吗?
  • 大厂面试-16道面试题
  • 搭建GraphQL服务
  • 数据仓库介绍及应用场景
  • 代码随想录算法训练营Day56 | 动态规划(16/17) LeetCode 583. 两个字符串的删除操作 72. 编辑距离