Assembly 如何在ARM中读取txt文件(包含整数),然后将其打印出来?

Assembly 如何在ARM中读取txt文件(包含整数),然后将其打印出来?,assembly,arm,Assembly,Arm,我很难理解ARM中的文件输入。我试图用一个.txt文件作为我唯一的参数来运行这个程序,这个参数包含几个整数,我无法取得任何进展 对于我的作业,除了两条注释之间的代码,我得到了下面所有的代码,这是我自己编写的代码 这是我到目前为止编写的代码 .file "sum.s" .text .align 2 .global main .type main, %function main: push {lr} //my code ldr r0, =rdfmt sub sp, sp, #4 mo

我很难理解ARM中的文件输入。我试图用一个.txt文件作为我唯一的参数来运行这个程序,这个参数包含几个整数,我无法取得任何进展

对于我的作业,除了两条注释之间的代码,我得到了下面所有的代码,这是我自己编写的代码 这是我到目前为止编写的代码

.file "sum.s"
.text
.align  2
.global main
.type   main, %function
main:
push {lr}   

//my code

ldr r0, =rdfmt
sub sp, sp, #4
mov r1, sp
bl scanf
ldr r2, [sp, #0]
add sp, sp, #4
mov r1, r2
bl printf
ldr lr, [sp, #0]
add sp, sp, #4
mov pc, lr
//end my code 

pop {pc}    

.section    .rodata
rdfmt:        .asciz "%d"
prtfmt:       .asciz "sum is %d\n"
我应该做的比上面的程序所指示的更多,但是让我们假设我希望能够打印包含5个整数的.txt文件中的第一个整数

所以我的input.txt是

    5
    6
    7
    8
    9
    5
我的输出是

    5
    6
    7
    8
    9
    5

看起来您忘记传递printf的格式了。r0的调用被截断,因此它不仍然持有指向该字符串的指针。事实上,r0持有返回值。使用调试器和/或读取调用约定/ABI文档

此外,您还将scanf转换结果用作返回地址,而不是返回值