ARM中如何做除法?

2023-11-29

我正在尝试找到如何在 ARM 中进行除法,因为没有DIV命令。如果可以通过浮点数相乘来完成[/9 = *0.09],通过减法或通过使用库。任何方式都可以。

目前我正在使用像这样的循环使用减法进行除法,但我丢失了小数:

MOV R0,#70 ;Fahrenheit Temperature
SUB R1,R0,#32 ; Subtracting 32
MOV R4,#0 ;Counter

LOOP 

   ADD R4,R4,#1; Counter+1 ->Is the answer of the division without decimals
   SUB R1,#9
   CMP R1,#0
   BPL LOOP
   MOV R1,R4

所以基本上我所做的是,我的温度为 70,我减去 32,得到 38。然后在循环中我每次取 9,直到提醒小于 9。使用正常除法的答案是 4.22222。这里我得到 5。所以我的结果不太准确。


如果您只想将一个整数值除以r0乘以 9,您可以近似为:

ldr r3,=0x1C71C71D   # 1C71C71D == (2^32 / 9) + 1
umull   r9,r3,r0,r3

r3现在包含商的整数部分,并且r9包含按 2^32 缩放的小数部分。要得到余数,只需将商的整数部分乘以 9,然后从原始值中减去结果即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ARM中如何做除法? 的相关文章

  • 寻找有效的移位/加法/LEA 指令序列来乘以给定常量(避免 MUL/IMUL)

    我正在尝试编写一个 C 程序 mult c 它有一个接收 1 个 int 参数的 main 函数 用atoi argv 1 这是一些常数k我们想要乘以 该程序将生成一个汇编文件mult s实现 int mult int x return x
  • 有哪些 x86 指令会对 ESP 产生副作用?

    我知道call and ret将修改的值esp然后push and pop有很多变体 但是还有其他指令会影响堆栈指针吗 The following instructions modify the stack pointer as an im
  • /usr/bin/as:无法识别的选项“-EL”

    因此 在为我的1plus手机编译android内核时 经过3天的多次尝试 我放弃了并尝试在这里询问是否有人以前遇到过这个问题 这个错误对我来说有点模糊 但我觉得问题来自于我最近对 GNU Linux 发行版 Gentoo 的更改 它在不应该
  • nasm/ld“重定位被截断以适合:R_386_16”

    集会 BITS 16 global start start mov ax 0x07C0 mov ds ax mov si hw call print string jmp print string mov ah 0x0E char lods
  • 将 2 个数字与汇编进行比较[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我有以下代码 我想完成汇编代码 如下
  • MIPS 汇编不支持“.set noat”吗?

    目前 我正在学习GNU as 并在 info as 中找到了很多有用的信息 我发现 set noat 在MIPS指定的代码中使用 但是当在 info as 中搜索该指令时 我在节点 alpha指令 中找到了它的解释 但在 MIPS Depe
  • LDR指令如何将常量加载到寄存器中?

    我刚刚读了一本ARM指令书 看到一条指令我无法解释 It says LDR将 32 位常量加载到r0登记 LDR r0 pc const number 8 pc const number DCD 0xff00ffff 我不明白什么 pc c
  • 为什么 GCC 不将这个“printf”优化为“puts”?

    这是我的测试代码 include
  • 给寄存器赋值并加减

    我对此完全迷失了 我需要使用寄存器来计算以下表达式的编程 varA varA varB varC varD 其中 varA varB 等是变量 将整数值分配给上述变量的 EAX EBX ECX 和 EDX 寄存器 这意味着 您可以对输入进行
  • 为什么我可以访问寄存器中较低的双字/字/字节,但不能访问较高的双字/字/字节?

    我开始学习汇编程序 这对我来说看起来不合逻辑 为什么我不能在寄存器中使用多个高字节 我明白了历史原因rax gt eax gt ax 所以让我们关注new64 位寄存器 例如 我可以使用r8 and r8d 但为什么不呢r8dl and r
  • X86 汇编将小写字母转换为大写字母

    实现toUpper函数 将字符串中的小写字母转换 为大写 该函数采用一个参数 char string 字符串是一个 char类型指针 指向字符串的开头 因为C 样式字符串以零结尾 我们不需要取长度 字符串作为另一个参数 我需要帮助开始 我不
  • 16位汇编:无法取消引用某些寄存器[重复]

    这个问题在这里已经有答案了 我正在尝试以下 Intel 16 位指令 mov si word reg where reg是一些寄存器 它编译得很好 如果reg is bx 但当它是ax cx or dx 我使用 NASM 作为我的汇编器 我
  • 汇编:使用数据段寄存器(DS)

    目前我正在学习 x86 汇编 因为我喜欢微控制器编程 所以我熟悉汇编 目前我一直在到处寻找这个问题的答案 但似乎找不到它 DS寄存器 我知道它应该指向我程序中的全局数据 但我不知道知道它到底是如何工作的 我正在使用 NASM 在大多数简单的
  • 二元除法问题:互联网上的坏例子或者我错过了什么?

    我想创建一个 16 位 CRC 实际上我已经完全准备好了 所以几个小时前我测试了它 但没有正常工作 但我发现互联网上的例子在涉及二进制除法时可能是错误的 我只链接其中两个 来自很多 http www ross net crc downloa
  • 使用arm-linux-gnueabi-gcc为Android交叉编译静态C hello world

    我想使用 arm linux gnueabi gcc 从 C 构建静态 hello world 而不是使用 NDK 独立工具链或 Codesourcery 在Ubuntu中 我做了以下事情 sudo apt get install gcc
  • ARM、VFP、浮点、惰性上下文切换

    我正在为 ARM 处理器 Cortex A9 编写操作系统 我正在尝试实现浮点寄存器的延迟上下文切换 这背后的想法是 浮点扩展最初对线程禁用 因此不需要在任务切换上保存浮点上下文 当线程尝试使用浮点指令时 会触发异常 然后 操作系统启用浮点
  • 在LPC2148 ARM处理器上创建中断向量的汇编代码

    我最近刚刚开始使用 LPC2148 ARM 处理器 我试图理解一些有关创建中断向量的汇编代码 这是代码 Runtime Interrupt Vectors Vectors b start reset start ldr pc undf un
  • Linux 内核使用的设备树文件 (dtb) 可视化工具? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个可以图形化表示Linux内核中使用的硬件设备树的工具 我正在尝试了解特定 Arm 芯片组
  • 尝试理解 printf() 的 gcc 汇编输出

    我正在尝试学习如何理解汇编代码 因此我一直在研究 GCC 的汇编输出以获取一些愚蠢的程序 其中之一只不过是int i 0 我现在或多或少完全理解了其中的代码 最大的困难是理解散布的 GAS 指令 无论如何 我向前迈了一步并添加了printf
  • 在 x86 汇编语言中获取文件大小的简单方法

    假设我已经在汇编中打开了一个文件 并且在寄存器 eax 中有该文件的文件句柄 我将如何获取文件的大小 以便为其分配足够的缓冲区空间 我在这里研究了另一个讨论 建议使用sys fstat 28 系统调用来获取文件统计信息但无法实现它 My a

随机推荐

  • 具有已定义迭代器的 C# for 循环

    我想使用已经定义的迭代器创建一个循环 目前我正在使用 int i while i lt 10 Console Writeline i i 这很丑陋 因为其他人稍后可能会删除 i 如果它和 while 语句被一大块代码隔开 就不清楚它的用途了
  • Android Studio 使用 Java 8 而不是 11

    我尝试导入的应用程序中的 gradle 版本与 JDK11 不兼容 而 android studio 使用 JDK11 作为其嵌入式 JDK 我的机器上有 JDK8 我尝试进入项目结构来更改 JDK8 位置的路径 但如果尝试更改它 则会出现
  • 原型继承的淘汰问题

    我在 Knockout 中遇到了一个问题 我在原型中创建了一个用户对象 其中对象的可观察属性似乎被最后一次出现的情况覆盖 因此我不能多次使用同一个对象 否则它将被覆盖 虽然这很难解释 但请看我的小提琴 http jsfiddle net R
  • 具有端口和工具项(删除、设置等)的 JointJS 元素

    我设法通过端口增强我的 SVG 形状 joint shapes devs Element joint shapes basic Generic extend extend joint shapes basic PortsModelInter
  • 在 HttpModule 内渲染页面?

    有人知道如何在 HttpModule 中渲染 aspx 页面并将其流回浏览器吗 你可以这样做 Type page type BuildManager GetCompiledType page aspx Page page Page Acti
  • 尝试添加新环境时,Aws Beanstalk nginx 被终止

    每次需要从 AWS EBS 面板添加新的环境变量时 我都会收到此错误 AWS Beanstalk 事件 2018 02 16 14 49 21 UTC 0200 INFO The environment was reverted to th
  • 从图像本地目录创建tensorflow数据集

    我在本地有一个非常庞大的图像数据库 数据分布就像每个文件夹都包含一个类的图像 我想使用tensorflow数据集API来获取批量数据 而无需将所有图像加载到内存中 我尝试过这样的事情 def parse function filename
  • Xdebug 断点总是有效,除非使用 @runTestsInSeparateProcesses 时?

    我终于让 Xdebug 可以工作 包括断点和 跳过 的能力 来进行单元测试 功能测试以及在浏览器中进行浏览 然而 每当我使用 runTestsInSeparateProcesses因为这个原因 Netbeans 断点不再起作用 如何在使用
  • 登录脚本使用机器密码让 kinit 在登录时获取票证

    我同步登录我的机器的密码 密码 解锁我的 ssh 密钥文件 ssh id rsa see man ssh keygen 和 kerberos 当我登录时 我输入一次密码来访问我的本地计算机帐户 作为奖励 我的 ssh 密钥文件也被解锁 我还
  • 正则表达式:括号中的必需字符

    如何搜索仅包含一组字符的字符串 包括x 并要求它包含 x 例如 a z 但如果不包含则不匹配x 所以它应该匹配quux但不是foo or bar 假设您想匹配仅包含 x y 或 z 的字符串 则匹配 start 后跟零个或多个y or z
  • PHP 7 - 如何搜索数组的多个特定成员

    我有一个 PHP 数组 如下所示 array size 3 CA Santa Barbara gt array size 2 state gt string CA length 2 city gt string Santa Barbara
  • 在我的情况下,如何以编程方式在另一种布局之上显示一种布局?

    我的主要布局main xml仅包含两个 LinearLayout The 1st LinearLayout主持一个VideoView and a Button The 2nd LinearLayout主办EditText 和这个Linear
  • 将逗号替换为点 Pandas

    给定一个相当长的数组 如下所示 我想用点替换逗号 array 0 140711 0 140711 0 0999 0 0999 0 001 0 001 0 140711 0 140711 0 140711 0 140711 0 140711
  • 从 $_POST 表单数据 PHP 中删除提交按钮值

    我正在使用此循环打印所有表单 POST 数据 foreach POST as name gt value print name value br 结果的末尾是提交按钮值 提交 编辑 这对我来说会导致错误 因为通过这个 foreac 循环 我
  • PHP firebird将blob文件插入数据库apache突然停止工作

    我目前正在火鸟数据库上插入图像 它单独工作正常 请参阅下面的代码 dbh ibase connect host user pass blh ibase blob create dbh ibase blob add blh data blob
  • 如何使用urllib2获取使用SSLv3加密的网页

    我正在使用 python 2 7 我想获取需要 sslv3 的网页的内容 目前 当我尝试访问该页面时 我收到错误 SSL23 GET SERVER HELLO 并且在网络上进行了一些搜索 导致我找到了以下解决方案 该解决方案修复了 Pyth
  • 使用 this.refs 的弃用警告

    我有一个 React 组件 我想在单击时切换 css 类 所以我有这个 export class myComponent extends React Component constructor super this state clicke
  • 如何使用 Paramiko 等 Python 库通过 Telnet 和 SSH 进行链式连接

    类似于这里提出的问题 使用 python SSH 和 telnet 到本地主机 我正在尝试找到以下问题的解决方案 从服务器A 完全权限 通过Jumhost B 无sudo 我想使用Python连接到多个网络设备 一个接一个就足够了 不必在同
  • Asp.net Mvc区域路由问题

    我希望网站的默认页面为 Login cshtml 我得到异常 错误 未找到视图 登录 或其主视图 或者没有视图引擎支持搜索的位置 搜索了以下位置 我有2个区域 结构如下图所示 我的路由配置如下所示 using System using Sy
  • ARM中如何做除法?

    我正在尝试找到如何在 ARM 中进行除法 因为没有DIV命令 如果可以通过浮点数相乘来完成 9 0 09 通过减法或通过使用库 任何方式都可以 目前我正在使用像这样的循环使用减法进行除法 但我丢失了小数 MOV R0 70 Fahrenhe