ARM程序集 - 在循环中获取下一个字符

时间:2016-03-03 02:32:10

标签: assembly arm

我希望能够创建一个汇编程序,它接收一个文件并循环遍历文件中的字符并打印它们。 如何使用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组装,所以如果有任何错误或编码错误,请发表评论。

这个问题的道歉真的很模糊,我是装配新手,仍在努力掌握概念。

非常感谢。

1 个答案:

答案 0 :(得分:0)

函数fgetc获取文件指针并返回一个整数。因此,它会显示r0并将值返回到r0

因此,在您的情况下,它会起作用,因为您可以在r0中阅读结果。

代码注释:你应该在循环之前读取文件指针,不要每次都将它存储到临时寄存器中。