2017-10-08 4 views
0

.txt 파일 내에서 내용을 읽고 인쇄하려고합니다.
나중에 덤프 된 파일을 mips에서도 읽으려고합니다.Mips 어셈블리를 사용하여 txt 파일의 내용 읽기 및 인쇄

.data 
myFile: .asciiz "teste.txt"  # filename for input 
buffer: .space 1024 
.text 

# Open file for reading 

li $v0, 13   # system call for open file 
la $a0, myFile  # input file name 
li $a1, 0   # flag for reading 
li $a2, 0   # mode is ignored 
syscall    # open a file 
move $s0, $v0   # save the file descriptor 


# reading from file just opened 

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


# Printing File Content 
li $v0, 4   # system Call for PRINT STRING 
la $a0, buffer  # buffer contains the values 
syscall    # print int 

li $v0, 10  # Finish the Program 
syscall 
+0

단일 단계 디버거에서 코드를. 디버거의 syscall 리턴 값에서 오류를 점검하십시오. 또는 시스템 호출을 추적하십시오. MARS 또는 SPIM에 IDK가 있지만 Linux가 ('strace') 수행하는 경우 IDK. 물론 Linux는 MARS 나 SPIM과는 다른 시스템 호출을 사용합니다. –

+0

어쨌든, 다양한 점에서 디버거의 레지스터 값을 포함하면 훨씬 더 나은 [mcve]가됩니다. –

+0

도움에 감사드립니다. 하지만 내 코드를 debbug하는 방법을 모르겠다. F3 + F7, F7, F7을 bised ... 또한 파일이 올바르게 읽히는 지 확인하는 방법이 있습니까? 왜냐하면 내가 파일 이름을 무효로 바꾸더라도 erros/warnings이 보이지 않기 때문입니다 ... – PlayHardGoPro

답변

1

문제는 내 파일의 path에 대해이었다 ...
나는 코드를보고 괜찮아요 보이지만 아무것도 출력 됨하지 않습니다.
경로가 소스 코드에서 시작한다고 생각했지만 .jar 파일에서 시작합니다.

내가해야 할 일을했을 모든

더블 \\과 fullpath에 공급을 할 것

.data 
myFile: .asciiz "c:\\Users\\johnDoe\\Documents\\Assembly\\test.txt" # filename for input