我需要用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函数结合起来。
答案 0 :(得分:0)
要了解整体情况,您需要发布整个代码,包括getnum
,divide
和printnum
的实际定义。
让我们假设:
getnum
从某处获取一个整数(控制台?)并将其存储在r0
divide
函数将r0
除以r1
,并将结果保存在相同的寄存器中(不确定r1
是什么,也许是部门提醒)。printnum
只打印出r0
。如果我的假设是正确的,只需将代码组合在一起:
bl getnum
mul r0, r0, #6985
mov r1, #1000
bl divide
bl printnum
<强>加成强>
AFAIK您不能对mul
命令使用相同的寄存器。不确定它是否适用于所有ARM。