Advertisement
Guest User

P4_1

a guest
Dec 14th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.     .data 0x10010000
  2. numbers:.space 5
  3. min:    .byte 0
  4. max:    .byte 10
  5. numbers_count:.byte 5
  6. try_again: .asciiz "It must be a number between 0 and 10"
  7. failed_1:.asciiz "You failed, try again"
  8.  
  9. failed_2:.asciiz “Exhausted attempts. Game over”
  10. max_number:.asciiz "The biggest number is :"   
  11. end_msg:.asciiz "End of the program"
  12.     .text
  13.     .globl __start
  14.  
  15. __start:
  16.     li $t0, 0       # FIRST TRY INDICATOR
  17.     li $t1, 0       # TRiES COUNTER
  18.     li $t2, numbers_count
  19.  
  20.     b enter_number_while
  21.  
  22. enter_number:
  23.     jal read_int
  24.     move $t3, $v0
  25.  
  26.     slt $t0, $t3, min
  27.     bgtz $t0, failed_once
  28.     sgt $t0, $t3, max
  29.     bgtz $t0, failed_once
  30.  
  31.     jr $ra
  32.  
  33. enter_number_while:
  34.     blez $t2, end_while
  35.     jal enter_number ## FIX
  36.     li $t1, 0
  37.  
  38.     sb $t3, card($t2)
  39.     sub $t2, $t2, 1
  40.  
  41.     jal enter_number_while
  42.     b enter_number_while
  43.  
  44. compare_numbers_while:
  45.     blez $t2, max_number
  46.    
  47.     lb $t1, numbers + 1($t2)  ## FIX
  48.     bgt $t1,
  49.     sub $t2, $t2, 1
  50.  
  51.     b compare_number_while
  52.  
  53. update_max:
  54.     li $t0, $t1
  55.  
  56. end_while:
  57.     li $t2, numbers_count
  58.  
  59.     jal compare_numbers_while
  60.  
  61. max_number:
  62.     la $a0, max_number
  63.     jal print_string
  64.  
  65.     move $a0, $t4
  66.     li $v0, 1
  67.     syscall
  68.  
  69.     j end_program
  70.  
  71. failed_once:
  72.     add $t1, $t0, 1
  73.     bgt $t1, $t0, failed_twice
  74.     li $a0, failed_1
  75.     jal print_string
  76.     j enter_number
  77.  
  78. failed_twice:
  79.     li $a0, failed_2
  80.     jal print_string
  81.  
  82.     j end_program
  83.  
  84. read_int:
  85.     li $v0, 5
  86.     syscall
  87.  
  88. print_string:
  89.     li $v0, 4
  90.     syscall # System call
  91.     jr $ra
  92.  
  93.  
  94. end_program:
  95.     li $v0, 10
  96.     syscall # The end
  97.  
  98.     .end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement