#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
. Итак, согласно этой теме ,
эта программа должна загрузить отрицательное значение в $v0
.
Но мой вывод выглядит следующим образом:
Что здесь происходит?
Как я могу / должен выполнить проверку ошибок?