如何从 MIPS 中的多行文本文件中读取整数

How to read integer from a text file on multiple lines in MIPS

我有一个文件文本,内容如下。我如何在 MIPS

中读取并将它们转换为整数
5
12 17 87 35 98

这是我读取文件的代码

.data
fileName: .asciiz "C:\Users\Admin\Desktop\input.txt"
newline : .asciiz "\n"
buffer: .space 1024
.text
.globl main
main:
    # open file
    li $v0,13
    la $a0,fileName
    li $a1,0
    li $a2,0
    syscall
    move $s0,$v0

    # read file
    li $v0,14
    move $a0,$s0
    la $a1,buffer
    li $a2,1024
    syscall

    # print buffer
    li $v0,4
    la $a0,buffer
    syscall

作业,我想,所以没有完整的代码。

没有用于从文件中读取整数的内置系统调用。因此,您必须将其作为字符串读入数据缓冲区并将 ASCII 字符转换为整数。

算法是:

  • 将最终数字初始化为零
  • 从头到尾遍历一串数字
  • 将当前数字字符转换为数字(减去0x30)
  • 将最终数字的当前值乘以10,加上当前数字
  • 移动到下一个字符,直到你碰到一个非数字

看看ASCII码table,看看数字的字符代码。对于第二步,使用其中一个寄存器作为指针:初始化为缓冲区的地址,使用 lb 从中读取当前数字,然后递增。

有帮助吗?