텍스트 파일에서 \ n으로 구분 된 고정되지 않은 수의 정수를 읽고 숙제하고 있는데, 링크 된 목록 (및 배열에서 성능을 비교하기 위해)으로 정렬해야합니다. 그 후, 정렬 된 목록을 다른 텍스트 파일에 써야하는데, 이것이 내 문제입니다. 나는 정말로 시스템 콜 15 개가 어떻게 작동 하는지를 모른다 (파일에 써라). 필자는 파일에 어떤 종류의 입력이 인쇄 될지 알지 못합니다. 내 말은, 그들은 정수가 아닌 문자열이어야한다고 생각합니다 ... 그래서 약간의 테스트 프로그램을 만들었고 작동하지 않았습니다. 여기있다 :MIPS에서 int 파일을 작성하는 방법?
.data
archivo: .asciiz "salida.txt"
.text
# reservar memoria para 3 chars + \0
li $v0, 9
li $a0, 4
syscall
move $s0, $v0
# agregar al array el numero 1 ascii
addi $t0, $zero, 49
sw $t0, 0($s0)
addi $s0, $s0, 4
# agregar al array el numero 0 ascii
addi $t0, $zero, 48
sw $t0, 0($s0)
addi $s0, $s0, 4
# agregar al array el numero 0 ascii
addi $t0, $zero, 48
sw $t0, 0($s0)
addi $s0, $s0, 4
# agregar al array \0 al final
addi $t0, $zero, 0
sw $t0, 0($s0)
addi $s0, $s0, -12
# abrir archivo en modo lectura
li $v0, 13
la $a0, archivo
li $a1, 1
li $a2, 0
move $s1, $v0
syscall
# escribir buffer $s0 en el archivo
li $v0, 15
move $a0, $s1
move $a1, $s0
addi $a2, $zero, 4
syscall
# cerrar archivo
li $v0, 16
move $a0, $s1
syscall
# finalizar ejecucion
li $v0, 17
syscall
내가 파일 "salida.txt"에 숫자 100를 기록하기 위해, 3 개 문자 + \ 0 문자에 대한 충분한 메모리를 할당하려고 노력했다. 그래서 1, 0, 0의 아스키 값을 배열 (할당 된 메모리)에 저장 한 다음 포인터를 감소시켜 해당 메모리 블록의 시작 부분을 가리 킵니다. 그런 다음 쓰기 모드에서 파일을 열고 버퍼 $ s0의 4자를 씁니다. 불행히도 파일을 만들지 만 아무것도 쓰지 않습니다. 어떤 도움을 주시면 감사하겠습니다. 감사.
나는이 같은 .DATA에서 선언 된 변수를 작성했습니다 :
.data
hola: .asciiz "hola"
.text
la $s3, hola
...
# do syscall 15 with move $a1, $s3
하지만이 중 하나가 작동하지 않았다.