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

时间:2019-07-26 03:38:17

标签: 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
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

1 个答案:

答案 0 :(得分:1)

您好像忘记了传递printf的格式。 r0被调用了,因此它仍然没有指向该字符串的指针。实际上r0保留了返回值。使用调试器和/或阅读电话会议/ ABI文档。

您还使用scanf转换结果作为返回地址,而不是返回值。