Mips 将小写从文件转换为大写到另一个文件

Mips 将小写从文件转换为大写到另一个文件,mips,mars-simulator,Mips,Mars Simulator,我是一名正在学习mips的学生,我有一个问题如下: 从一个文件中取出所有小写字母,将它们转换成大写字母,并将它们打印到另一个文件中。 我试着打开第一个文件,名为“Alice”,这是我需要检查的文件,并“提取”所有小写字母,将它们转换为大写,然后将它们写入另一个名为“AliceU”的文件,因此在我的代码中,我打开了两个文件,读取第一个文件,并尝试写入另一个文件,但我认为有些地方不对,因此,我要求您在我的代码中注意到一些不正确的实用信息 .data filename: .asciiz "Allice

我是一名正在学习mips的学生,我有一个问题如下:

从一个文件中取出所有小写字母,将它们转换成大写字母,并将它们打印到另一个文件中。 我试着打开第一个文件,名为“Alice”,这是我需要检查的文件,并“提取”所有小写字母,将它们转换为大写,然后将它们写入另一个名为“AliceU”的文件,因此在我的代码中,我打开了两个文件,读取第一个文件,并尝试写入另一个文件,但我认为有些地方不对,因此,我要求您在我的代码中注意到一些不正确的实用信息

.data
filename: .asciiz "Allice.txt"
filename2: .asciiz "AlliceU.txt"
input: .space 1024

.text
# Open (for reading)
  li   $v0, 13              # system call for open file
  la   $a0, filename        # output file name
  li   $a1, 0               # Open for writing (flags are 0: read, 1: write)
  move $s0, $v0             # save the file descriptor 
  syscall                   # open a file (file descriptor returned in $v0)

ReadFile:
li   $v0, 14        # system call for reading from file
move $a0, $s0       # file descriptor 
la   $a1, input    # address of buffer from which to read
li   $a2, 1024       # hardcoded buffer length
syscall             # read from file

# Open (for writing)
  li   $v0, 13              # system call for open file
  la   $a0, filename2       # output file name
  li   $a1, 1               # Open for writing (flags are 0: read, 1: write)
  move $s1, $v0             # save the file descriptor 
  syscall                   # open a file (file descriptor returned in $v0)


Replace:
    lb $t1, input($t3)
    beq $t1, 0, exit
    blt $t1, 'a', case
    bgt $t1, 'z', case
    sub $t1, $t1, 32
    sb $t1, input($t3)

case: 
    addi $t3, $t3, 1
    j Replace

WriteFile:
# Write to file
li $v0,15
move $a0,$s1
la $a1,input
la $a2,1024
syscall

exit:
# Close the file 
  li   $v0, 16       # system call for close file
  move $a0, $s1      # file descriptor to close
  syscall            # close file
  li   $v0, 16       # system call for close file
  move $a0, $s0      # file descriptor to close
  syscall            # close file

所以我从前面的问题中得到了一些建议,但我无法深入理解这个东西到底是如何工作的。

欢迎来到Stack Overflow。你的问题到底是什么?嘿!很抱歉这是我的第一篇文章,我花了一些时间才弄明白如何创建代码块,我试着打开第一个文件,名为“Alice”,这是我需要查看的文件,并“提取”所有小写字母,将其转换为大写,然后将其写入另一个名为“AliceU”的文件,因此,在我的代码中,我打开了两个文件,读取了第一个文件,并尝试写入另一个文件,但我认为有些地方不正确,因此我想了解一些实际信息,您可能会注意到我的代码中没有更正。这一切都很好,堆栈溢出使用的标记可能需要一段时间才能完成。很抱歉,延迟,我刚刚注意到你编辑了你的最后一条评论。我已经有几年没有用MIPS做过任何事情了。我的上一个项目是将两个32位浮点相乘,并将64位乘积存储在两个32位寄存器中。我们从未提交IO,但应该不会太难。让我看一下你的代码,然后再给你回复。欢迎来到堆栈溢出。你的问题到底是什么?嘿!很抱歉这是我的第一篇文章,我花了一些时间才弄明白如何创建代码块,我试着打开第一个文件,名为“Alice”,这是我需要查看的文件,并“提取”所有小写字母,将其转换为大写,然后将其写入另一个名为“AliceU”的文件,因此,在我的代码中,我打开了两个文件,读取了第一个文件,并尝试写入另一个文件,但我认为有些地方不正确,因此我想了解一些实际信息,您可能会注意到我的代码中没有更正。这一切都很好,堆栈溢出使用的标记可能需要一段时间才能完成。很抱歉,延迟,我刚刚注意到你编辑了你的最后一条评论。我已经有几年没有用MIPS做过任何事情了。我的上一个项目是将两个32位浮点相乘,并将64位乘积存储在两个32位寄存器中。我们从未提交IO,但应该不会太难。让我看看你的密码,我会给你回复的。