Почему недоступность файла не дает отрицательного значения $ v0? - PullRequest
0 голосов
/ 12 мая 2019
#only 24-bits 600x50 pixels BMP files are supported
.eqv BMP_FILE_SIZE 90122
.eqv BYTES_PER_ROW 1800

.data
#space for the 600x50px 24-bits bmp image
.align 4
res:    .space 2
image:  .space BMP_FILE_SIZE

fname:  .asciiz "source1.bmp"

.text
#====================================================
# main - main program
#----------------------------------------------------
main:
    ## read bitmap file into 'image'
    jal read_bmp

exit:   
    li  $v0,10      #Terminate the program
    syscall
#=====================================================

read_bmp:
    #push $ra to the stack
    sub $sp, $sp, 4     
    sw  $ra, 4($sp)
    #push $s1  to the stack
    sub $sp, $sp, 4     
    sw  $s1, 4($sp)

    # open file for reading
    li $v0, 13
        la $a0, fname   #file name 
        li $a1, 0       #0 - open for reading
        li $a2, 0       #0 - ignore length ($a2 = the length of bytes to read)
        syscall
    move $s1, $v0       # save the file descriptor

    lw $s1, 4($sp)      #restore (pop) $s1
    add $sp, $sp, 4
    lw $ra, 4($sp)      #restore (pop) $ra
    add $sp, $sp, 4

    jr $ra

Во-первых, в каталоге нет файла с именем source1.bmp. Итак, согласно этой теме ,

enter image description here

эта программа должна загрузить отрицательное значение в $v0.

Но мой вывод выглядит следующим образом:

enter image description here

Что здесь происходит?

Как я могу / должен выполнить проверку ошибок?

...