Advertisement
Guest User

Untitled

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