2017-01-02 75 views
2

我有一張PGM照片,我試圖在MIPS中打開並閱讀。 當PGM文件中的值是ASCII時,一切都按預期工作。當它們是十六進制格式時,系統調用14(讀取)只讀取兩個值而不是停止,並且我最終只在緩衝區中存在文件的一部分從MIPS中的二進制文件中讀取

To the left HEX - not working, to the right ASCII - working. Same file 到左邊十六進制 - 沒有工作,到右邊的ASCII - 工作。相同的文件。

那是我的代碼(緩衝區中的數據段中聲明,並有足夠的空間來分配文件)

#open a file 
    li $v0, 13 #Syscall for loading files 
    la $a0, image_file #Saving the address to $a0 
    li $a1, 0  # flag for reading 
    li $a2, 0  # mode is ignored 
    syscall 
    move $s6, $v0 #Placing the descriptor in $s6 for later-use 

#read from file 
    li $v0, 14 #Syscall to read from files 
    move $a0, $s6 #Moving descriptor to $a0 
    la $a1, buffer # address of buffer to which to read 
    li $a2, 65555  # hardcoded buffer length 
    syscall 
+0

你發現了什麼嗎?如果你這樣做,你也可以回答你自己的問題。 – szoszk

回答

1

答案是,它的實際讀取整個文件,控制檯就不會顯示一切由於EOF標誌。一旦保存文件,您將需要再次指定文件的確切長度,以便能夠保存所有內容,而不僅僅是數據,直到EOF標誌。