ARM 编程模拟器

ARM 编程模拟器网站地址:

https://cpulator.01xz.net/?sys=arm-de1soc

逻辑移位

LSL:逻辑左移
LSR:逻辑右移

这里有一个二进制00001010,转换为十进制为10,现在要进行LSL逻辑左移

00001010 --- 00010100  //每一位都向前移一位

现在就变成了00010100,十进制为20,就相当于乘以二了,我们可以用逻辑左移的方式,对数值乘以二

现在我们要进行LSR逻辑右移,还是二进制00001010,转换为十进制为10

00001010 --- 00000101   //每一位都向后移一位

现在就变成了00000101,转换为十进制为5,就相当于对数值除以二了

实战:

.global _start
_start:mov r0,#10lsl r0,#1  //lsl指令后面是需要移动的寄存器,和移动的位数

本来r0寄存器里面的值是10,现在二进制整体向左移了一位,就变成了20


实战:

.global _start
_start:mov r0,#10lsr r0,#1   //lsr指令后面是需要移动的寄存器,和移动的位数

本来r0寄存器里面的值是10,现在二进制整体向右移了一位,就变成了5

轮换

ROR:右移轮换

轮换和逻辑移位很相似,但移位的时候不会损失数值

LSR:00001001 --- 00000100  //最后的1被移除了
ROR:00001001 --- 10000100  //1去到最左边了

需要注意的是,只有ROR,没有ROL,只能向右移,不能向左移

.global _start
_start:mov r0,#100ror r0,#1  //ror指令后面是需要移动的寄存器,和移动的位数

条件和分支

在高级语言里有if判断,在arm里也有if判断的指令

cmp:对操作的两个寄存器相减,不同的话就为正数或负数,相同就为0
bgt:b的意思是分支,gt的意思是大于
bge:大于等于
blt:小于
ble:小于等于
beq:等于
bne:不等于
.global _start
_start:mov r0,#2mov r1,#1cmp r0,r1   //r0 - r1bgt baimao  //当r0大于r1时,执行baimao标签里的内容baimao:   mov r2,#5

在这里判断是正确的,r0大于r1时,他会直接跳到指定的标签里执行内容

以此类推

还有一个指令是可以不用判断,直接执行标签里的内容

bal:执行指定标签里的内容
.global _start
_start:mov r0,#2mov r1,#1bal baimaobaimao:mov r2,#5

总结

这是我学习的笔记,有什么错误和不懂的地方欢迎来私信我,或者加我qq

用ARM进行汇编语言编程(3)逻辑移位和轮换,条件与分支相关推荐

  1. 树莓派ARM汇编语言编程十讲(第1讲)

    内容简介 树莓派单板机(Raspberry Pi Single Computer)是一种极了不起的产品,用户可以以非常低的成本获得一个Linux环境并带GPIO硬件扩展的迷你计算机系统.新一代树莓派4 ...

  2. arm体系结构与编程_教程:如何学习嵌入式系统(基于ARM平台)

    一.嵌入式系统的概念 着重理解"嵌入"的概念 主要从三个方面上来理解. 1.从硬件上,将基于CPU的处围器件,整合到CPU芯片内部,比如早期基于X86体系结构下的计算机,CPU只是 ...

  3. ARM体系结构与编程(更)

    目录 ARM指令分类及其寻址 ARM指令集介绍 ARM汇编语言程序设计 伪操作 ARM汇编语言伪指令 ARM存储系统 ATPCS ARM程序和Thumb程序混合编程 异常中断处理 ARM C/C++编 ...

  4. 【学习笔记】ARM Cortex-A(armv7)编程手册

    第一章介绍了 ARM Cortex-A 系列处理器的基本功能,介绍 ARM 体系结构的基础知识,涵盖各种寄存器: 第二章和第三章提供了有关各个处理器的模式和一些背景知识: 第四章和第五章简要介绍了 A ...

  5. c汇编语言实验,C语言与汇编语言编程实验

    1. 掌握在ADT IDE中编写汇编和C语言混合编程程序; 2. 掌握C语言和汇编语言相互调用的过程; 3. 掌握GNU C中内嵌汇编语言的编程方法. C语言与汇编语言编程实验 实验目的 1. 掌握在 ...

  6. c55x汇编语言,TMS320C55x汇编语言编程A.ppt

    TMS320C55x汇编语言编程A 例4-17,无效定义的表达式. .global Y ; 定义Y为全局外部符号 badsym1.set Y ; Y在当前文件中未定义 badsym2.set 50h ...

  7. arm汇编和c语言混合编程实验报告,实验三C语言和ARM汇编混合编程指导书.doc

    实验三C语言和ARM汇编混合编程指导书 实验三 1. 实验目的 掌握C语言和ARM汇编混合编程方法. 2. 实验设备 硬件:PC 机 一台 软件:Windows98/XP/2000 系统,ADS 1. ...

  8. 用汇编语言编程的计算机

    用汇编语言编程的计算机 下面介绍一种通过汇编语言进行编程的计算机.该计算机通过按键输入汇编语言程序,通过数字电路判断汇编语句的因果关系,并实现相关保存到寄存器,像端口输出信号,从端口读取信号的功能.计 ...

  9. ARM架构与编程--基于STM32F103 (1)LED原理图

    ARM架构与编程–基于STM32F103 (1)LED原理图 前言 学习笔记<硬件知识_LED原理图> 一.点亮一个led的步骤 当我们学习C语言的时候,我们会写个Hello程序.那当我们 ...

最新文章

  1. 全球与中国InGaAs光电二极管传感器市场投资机会与市场风险评估报告2022-2028年
  2. LoadRunner的Socket脚本关联小技巧
  3. myeclipse设置注释格式
  4. java日期格式大全 format SimpleDateFormat
  5. mysql 查看表格scott_mysql查询学习第一天,针对scott
  6. PHP中 htmlspecialchars,htmlentities, nl2br函数
  7. spring boot中的注解
  8. VxWorks 6.9 内核编程指导之读书笔记 -- POSIX
  9. TortoiseSVN安装中文语言包
  10. QC新7大手法全面详解
  11. RK3399外设驱动之PWM驱动:红外驱动
  12. imap服务器怎么填写 网易邮箱,ipad设置163邮箱教程 如何设置163邮箱【详细介绍】...
  13. Docker下安装部署MsSql
  14. 小米数据收集利器:AgentSource
  15. ttl接地是高电平还是低电平_说明图3.12中各门电路的输出是高电平还是低电平。已知它们都是74HC系列的CMOS电路 简单的逻辑门电路 判断各门电路...
  16. MySQL最新通俗易懂
  17. 电子科大2020计算机考研真题,2021电子科技大学考研历年真题复习资料
  18. UR机器人(二):Path and Time Scaling
  19. 使用gensim框架及Word2Vec词向量模型获取相似词
  20. 2022中级Android开发面试解答,当上项目经理才知道

热门文章

  1. 关于医学和计算机的论文,医学院校计算机教学论文
  2. IT人员如何搭建自己的个人网站并获取一个免费的主机服务器?
  3. 华为5G模块MH5000-31资料全集5G技术论坛
  4. Android面试计网面经大全【持续更新中。。。】
  5. 简易QQ聊天代码及分析
  6. 关于移动硬盘的文件系统
  7. 抄底的艺术——量化交易之路
  8. python制作拼图小游戏
  9. C++数组过大时出现的编译错误:(.text+0x165): 截断重寻址至相符: R_X86_64_32S
  10. stock market 模拟