Advertisement
Guest User

Untitled

a guest
Oct 14th, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .data
  2.     seed_prompt:    .asciiz "Please enter a seed..."
  3.     max_prompt:     .asciiz "Please specify the max number"
  4.   guess_prompt:   .asciiz "Enter you guess"
  5.     very_far:       .asciiz "VERY FAR"
  6.     far:            .asciiz "FAR"
  7.     near:           .asciiz "NEAR"
  8.     very_near       .asciiz "VERY NEAR"
  9.     correct:        .asciiz "CORRECT"
  10.  
  11. .text
  12.  
  13. .globl MAIN
  14.  
  15. MAIN:
  16.     li  $v0,    4                   # printing string for max number prompt
  17.     la  $a0,    max_prompt
  18.     syscall                         # print statement
  19.     li  $v0,    5
  20.     syscall                         # read int
  21.     add $t0,    $zero,  $v0         # move max num to $t0
  22.     li  $v0,    4
  23.     la  $a0,    seed_prompt
  24.     syscall                         # print seed prompt
  25.     li  $v0,    5
  26.     syscall                         # get seed
  27.     add $t1,    $zero,  $v0         # move seed to $t1
  28.     li  $v0,    40                  # syscall to give seed
  29.     li  $a0,    0                   # give id
  30.     add $a1,    $zero,  $t1         # give seed
  31.     syscall
  32.     li  $v0,    42                  # code for ran int gen
  33.     li  $a0,    0                   # give id for pseudo rand int gen
  34.     add $a1,    $zero,  $t0         # put max int in $a0
  35.     syscall                         # get the rand int
  36.  
  37.     jal GET_LIMS
  38.  
  39.     LOOP:
  40.         jal   GET_INPUT
  41.         add     $a0,    $zero,  $v0
  42.  
  43.         jal   COMPARE_NUM
  44.         b       LOOP
  45.  
  46. GET_LIMS:
  47.     addi    $sp,    $sp,    -4
  48.     sw      $ra,    0($sp)
  49.  
  50.     add     $s0,    $zero,  $a0  # move target to $s0
  51.  
  52.     mult    $a0,    0.05
  53.     mflo    $s1                     # 5 %
  54.  
  55.     mult    $a0,    0.1
  56.     mflo    $s2                     # 10 %
  57.  
  58.     mult    $a0,    0.25
  59.     mflo    $s3                     # 25 %
  60.  
  61.   lw    $ra,  0($sp)
  62.   addi  $sp,  $sp,  4
  63.   jr    $ra
  64.  
  65. GET_INPUT:
  66.   # save return address
  67.     addi $sp, $sp ,-4
  68.     sw $ra, 0($sp)
  69.  
  70.     li $v0, 4            #
  71.     la $a0, guess_prompt
  72.     syscall
  73.     li $v0, 5
  74.     syscall
  75.     lw $ra, 0($sp)
  76.     addi $sp, $sp ,4
  77.     jr $ra
  78.  
  79. COMPARE_NUM:
  80.    addi $sp, $sp, -4
  81.    sw $ra 0($sp)
  82.  
  83.    sub $t2, $s0, $a0
  84.    abs $t2, $t2
  85.  
  86.    beq $a0, $s0, Exit
  87.    ble $t2, $s1, VERY_NEAR
  88.    blt $t2, $s2, NEAR
  89.    blt $t2, $s3, FAR
  90.  
  91.    li  $v0,    4
  92.    la  $a0,    very_far
  93.    syscall
  94.  
  95.    lw      $ra, 0($sp)
  96.    addi    $sp, $sp, 4
  97.    jr      $ra
  98.  
  99.    VERY_NEAR:
  100.        li  $v0,    4
  101.        la  $a0,    very_near
  102.        syscall
  103.  
  104.        lw      $ra, 0($sp)
  105.        addi    $sp, $sp, 4
  106.        jr      $ra
  107.  
  108.    NEAR:
  109.        li  $v0,    4
  110.        la  $a0,    near
  111.        syscall
  112.  
  113.        lw      $ra, 0($sp)
  114.        addi    $sp, $sp, 4
  115.        jr      $ra
  116.  
  117.    FAR:
  118.        li  $v0,    4
  119.        la  $a0,    far
  120.        syscall
  121.  
  122.        lw      $ra, 0($sp)
  123.        addi    $sp, $sp, 4
  124.        jr      $ra
  125.  
  126.   Exit:
  127.       li  $v0,    4
  128.       la  $a0,    correct
  129.       syscall
  130.       li  $v0,    10
  131.       syscall
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement