【发布时间】:2016-03-03 02:32:10
【问题描述】:
我希望能够创建一个汇编程序,它接收一个文件并循环遍历文件中的字符并打印它们。 如何使用 fgetc 来获取字符?我觉得我需要存储字符,然后使用另一个函数打印
代码:
.global fgetc
.global start
.data
filein: .asciz "filein.txt"
read: .asciz "r"
.text
start:
PUSH {R1}
LDR R0, [R1, #0x04]
LDR R1, =read
BL fopen
LDR R1, =filein
STR R0, [R1]
POP {R1}
B loop
loop:
LDR R1, = filein @load R1 with the address of filein
LDR R0, [R1] @load pointer to R1 into R0
BL fgetc
endloop:
exit:
如何使用 BL fgetc 获取文件中的下一个字符?或者那行代码会这样做吗?
我希望能够获取此字符并将其存储在一个数组中,然后打印该数组。我正在一步一步进行,所以我只想知道如何获取文件中的下一个字符。
如您所见,我还没有启动 endloop 和 exit 函数。我很久没有做 ARM 汇编了,所以如果有任何错误或错误的编码习惯,请发表评论。
抱歉这个问题真的很含糊,我是组装新手,仍在尝试掌握概念。
非常感谢。
【问题讨论】:
-
是的,您可以使用
fputc。查看C compiler output 的 fgetc/fputc 循环。查看 ARM 上使用的调用约定,以了解将 args 放入哪些寄存器,以及哪些 regs 是调用保留的还是调用破坏的。