【发布时间】:2021-02-12 13:34:12
【问题描述】:
用ARM汇编代码(树莓派)编写以下代码
g=12, h=8, i=2, j=5;
f = (g + h) - (i + j);
您的程序显示消息:
f = (g + h) – (i + j) = 13
注意,13 应该是计算出来的,而不是硬编码的
.data
string: .ascii "\n f = (g+h) - (i+j) = %d\n"
@Code Section
.text
.global main
.extern printf
main: ldr R0,12
ldr R1,8
ldr R2,2
ldr R3,5
add R4,R0,R1
add R5,R2,R3
sub R6,R4,R5
bl printf
在 ARM 汇编中如何显示消息:f = (g + h) – (i + j) = 13。我知道我做错了,那是我的尝试。当我遵守时,它说“指令错误”...1 谁能告诉我如何修复我的代码并完成这个程序?非常感谢!!!
【问题讨论】:
-
printf() 是一个 C 库函数。您可能不会在您的装配环境中调用它。即使可以调用 printf(),它也希望 r0/r1/r2/r3 遵守 Arm AAPCS(过程调用标准)。 printf() 可能不期望您的 R0/R1。
-
谢谢!我应该用什么来显示消息“f = (g + h) – (i + j) =” 13?