编写ARM汇编语言程序以执行浮点数

时间:2016-10-10 15:37:54

标签: assembly arm

我需要用ARM汇编语言编写一个程序,它以整数作为输入,并返回整数乘以6.985的整数值。例如,如果输入36作为输入,则结果将为251.

我只能使用内置函数add(添加两个整数),mul(乘以两个整数),divide(除以两个整数),getnum(从用户输入一个整数)和printnum(它将输出打印到屏幕上)。我的方法是首先乘以6985然后除以1000。

这是我的mul函数代码:

bl getnum

mul r0, r0, #6985

bl printnum

这是我的除法函数代码:

bl getnum

mov r1, #1000

bl divide

mov r4, r0

mov r5, r1

bl printnum

mov r0, r5

bl printnum

我的问题是如何将这两种方法结合起来,以便一次执行乘法和除法?我还是这门语言的新手,所以我不知道如何摆脱除法函数中的getnum并将其与mul函数结合起来。

1 个答案:

答案 0 :(得分:0)

要了解整体情况,您需要发布整个代码,包括getnumdivideprintnum的实际定义。

让我们假设:

  • getnum从某处获取一个整数(控制台?)并将其存储在r0
  • 中 您在代码中引用的
  • divide函数将r0除以r1,并将结果保存在相同的寄存器中(不确定r1是什么,也许是部门提醒)。
  • printnum只打印出r0
  • 的值

如果我的假设是正确的,只需将代码组合在一起:

bl getnum

mul r0, r0, #6985
mov r1, #1000

bl divide

bl printnum

<强>加成

AFAIK您不能对mul命令使用相同的寄存器。不确定它是否适用于所有ARM。