Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # By Omar Alkersh: 400214491, Shubham Ahuja: 400207645
- .data
- seed_prompt: .asciiz "Please enter a seed:\n"
- max_prompt: .asciiz "Please specify the max number:\n"
- guess_prompt: .asciiz "Enter you guess:\n"
- very_far: .asciiz "VERY FAR\n"
- far: .asciiz "FAR\n"
- near: .asciiz "NEAR\n"
- very_near: .asciiz "VERY NEAR\n"
- correct: .asciiz "CORRECT\n"
- v_n: .float 0.05
- n: .float 0.1
- f: .float 0.2
- .text
- .globl MAIN
- MAIN:
- li $v0, 4 # printing string for max number prompt
- la $a0, max_prompt
- syscall # print statement
- li $v0, 5
- syscall # read int
- add $t0, $zero, $v0 # move max num to $t0
- li $v0, 4
- la $a0, seed_prompt
- syscall # print seed prompt
- li $v0, 5
- syscall # get seed
- add $t1, $zero, $v0 # move seed to $t1
- li $v0, 40 # syscall to give seed
- li $a0, 0 # give id
- add $a1, $zero, $t1 # give seed
- syscall
- li $v0, 42 # code for ran int gen
- li $a0, 0 # give id for pseudo rand int gen
- add $a1, $zero, $t0 # put max int in $a0
- syscall # get the rand int
- jal GET_LIMS
- LOOP:
- jal GET_INPUT
- add $a0, $zero, $v0
- jal COMPARE_NUM
- b LOOP
- GET_LIMS:
- addi $sp, $sp, -4
- sw $ra, 0($sp)
- add $s0, $zero, $a0 # move target to $s0
- mtc1 $s0, $f0
- cvt.s.w $f0, $f0
- l.s $f1, v_n
- l.s $f2, n
- l.s $f3, f
- mul.s $f1, $f0, $f1
- mul.s $f2, $f0, $f2
- mul.s $f3, $f0, $f3
- cvt.w.s $f1, $f1
- cvt.w.s $f2, $f2
- cvt.w.s $f3, $f3
- mfc1 $s1, $f1
- mfc1 $s2, $f2
- mfc1 $s3, $f3
- lw $ra, 0($sp)
- addi $sp, $sp, 4
- jr $ra
- GET_INPUT:
- # save return address
- addi $sp, $sp ,-4
- sw $ra, 0($sp)
- li $v0, 4 #
- la $a0, guess_prompt
- syscall
- li $v0, 5
- syscall
- lw $ra, 0($sp)
- addi $sp, $sp ,4
- jr $ra
- COMPARE_NUM:
- addi $sp, $sp, -4
- sw $ra 0($sp)
- sub $t2, $s0, $a0
- abs $t2, $t2
- beq $a0, $s0, Exit
- ble $t2, $s1, VERY_NEAR
- blt $t2, $s2, NEAR
- blt $t2, $s3, FAR
- li $v0, 4
- la $a0, very_far
- syscall
- lw $ra, 0($sp)
- addi $sp, $sp, 4
- jr $ra
- VERY_NEAR:
- li $v0, 4
- la $a0, very_near
- syscall
- lw $ra, 0($sp)
- addi $sp, $sp, 4
- jr $ra
- NEAR:
- li $v0, 4
- la $a0, near
- syscall
- lw $ra, 0($sp)
- addi $sp, $sp, 4
- jr $ra
- FAR:
- li $v0, 4
- la $a0, far
- syscall
- lw $ra, 0($sp)
- addi $sp, $sp, 4
- jr $ra
- Exit:
- li $v0, 4
- la $a0, correct
- syscall
- li $v0, 10
- syscall
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement