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

时间:2020-06-10 05:26:17

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

1 个答案:

答案 0 :(得分:1)

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

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

算法是:

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

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

有帮助吗?

相关问题