80.9k views
2 votes
Write a well-documented MIPS Assembly program that: Prompts the user to enter from the KBD an integer number in the range (10 .. +40).• Multiply the entered number by 24. (Multiply instructions are NOT allowed).• Display the entered and the calculated result separated by tab at the beginning of a new line

User Antwoine
by
8.9k points

1 Answer

5 votes

Final answer:

MIPS Assembly Program:

.data
prompt: .asciiz
result: .asciiz "\\Result: "
tabSpace: .asciiz "\t"
.text
.globl main

main:
li $v0, 4
la $a0, prompt
syscall

li $v0, 5
syscall

blt $v0, 10, main
bgt $v0, 40, main

move $t0, $v0
sll $t1, $t0, 3
sll $t2, $t0, 4
add $t1, $t1, $t2
sll $t0, $t0, 1
add $t1, $t1, $t0

li $v0, 4
la $a0, result
syscall

li $v0, 1
move $a0, $t1
syscall

li $v0, 10
syscall

Step-by-step explanation:

To write a MIPS Assembly program that prompts the user to input an integer between 10 and 40 and then multiplies this number by 24 without using the multiply instruction, we can achieve this by using a series of addition operations.

Here is a MIPS Assembly code:

.data
prompt: .asciiz "Please enter an integer between 10 and 40: "
result: .asciiz "\\Result: "
tabSpace: .asciiz "\t"
.text
.globl main

main:
li $v0, 4 # syscall for print string
la $a0, prompt # load address of prompt
syscall

li $v0, 5 # syscall for read integer
syscall

blt $v0, 10, main # check if input is less than 10
bgt $v0, 40, main # check if input is greater than 40

move $t0, $v0 # move input number to $t0
sll $t1, $t0, 3 # multiply input by 8 using shift left logical
sll $t2, $t0, 4 # multiply input by 16 using shift left logical
add $t1, $t1, $t2 # add the results of both shifts
sll $t0, $t0, 1 # multiply input by 2 using shift left logical
add $t1, $t1, $t0 # final result is input multiplied by 24

li $v0, 4
la $a0, result
syscall

li $v0, 1 # syscall for print integer
move $a0, $t1 # move result to $a0
syscall

li $v0, 10 # syscall for exit
syscall

This code performs the required functionality. User input is obtained and checked to be within range. If it is not, the user is prompted again.

The multiplication by 24 is done by bit shifting the input to create multiples that are then added together, which provides the same result as multiplying by 24.

User Wirher
by
8.7k points