我希望能够创建一个汇编程序,它接收一个文件并循环遍历文件中的字符并打印它们。 如何使用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和退出功能。我没有长时间进行ARM组装,所以如果有任何错误或编码错误,请发表评论。
这个问题的道歉真的很模糊,我是装配新手,仍在努力掌握概念。
非常感谢。
答案 0 :(得分:0)
函数fgetc
获取文件指针并返回一个整数。因此,它会显示r0
并将值返回到r0
。
因此,在您的情况下,它会起作用,因为您可以在r0
中阅读结果。
代码注释:你应该在循环之前读取文件指针,不要每次都将它存储到临时寄存器中。