Преобразование нижнего регистра из файла в верхний регистр в другой файл - PullRequest
1 голос
/ 18 апреля 2019

Я студент, в настоящее время изучающий mips, и у меня есть вопрос в следующем виде:

Возьмите все строчные буквы из файла, преобразуйте их в прописные буквы и напечатайте их в другом файле.,Я попытался открыть первый файл, названный «Алиса», это файл, который мне нужен, чтобы пройти через него и «взять» все строчные буквы, преобразовать их в верхний регистр и записать их в другой файл с именем «Алиса»,поэтому в своем коде я открыл 2 файла, прочитал первый, и я пытаюсь записать в другой, но я думаю, что что-то не так, поэтому я спрашиваю практическую информацию, которую вы можете заметить в моем коде, которая не верна

.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

Итак, я взял несколько советов из вопроса, заданного здесь ранее, но я не мог глубоко понять, как эта штука работает точно.

...