Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .data 0x10010000
- numbers:.space 5
- min: .byte 0
- max: .byte 10
- numbers_count:.byte 5
- try_again: .asciiz "It must be a number between 0 and 10"
- failed_1:.asciiz "You failed, try again"
- failed_2:.asciiz “Exhausted attempts. Game over”
- max_number:.asciiz "The biggest number is :"
- end_msg:.asciiz "End of the program"
- .text
- .globl __start
- __start:
- li $t0, 0 # FIRST TRY INDICATOR
- li $t1, 0 # TRiES COUNTER
- li $t2, numbers_count
- b enter_number_while
- enter_number:
- jal read_int
- move $t3, $v0
- slt $t0, $t3, min
- bgtz $t0, failed_once
- sgt $t0, $t3, max
- bgtz $t0, failed_once
- jr $ra
- enter_number_while:
- blez $t2, end_while
- jal enter_number ## FIX
- li $t1, 0
- sb $t3, card($t2)
- sub $t2, $t2, 1
- jal enter_number_while
- b enter_number_while
- compare_numbers_while:
- blez $t2, max_number
- lb $t1, numbers + 1($t2) ## FIX
- bgt $t1,
- sub $t2, $t2, 1
- b compare_number_while
- update_max:
- li $t0, $t1
- end_while:
- li $t2, numbers_count
- jal compare_numbers_while
- max_number:
- la $a0, max_number
- jal print_string
- move $a0, $t4
- li $v0, 1
- syscall
- j end_program
- failed_once:
- add $t1, $t0, 1
- bgt $t1, $t0, failed_twice
- li $a0, failed_1
- jal print_string
- j enter_number
- failed_twice:
- li $a0, failed_2
- jal print_string
- j end_program
- read_int:
- li $v0, 5
- syscall
- print_string:
- li $v0, 4
- syscall # System call
- jr $ra
- end_program:
- li $v0, 10
- syscall # The end
- .end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement