Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

# File: mlIfElse.asm # Author: ********* # Date: // # Purpose: Practice if-else logic #---------------------------------------------- # WRITE MIPS CODE FOR THE FOLLOWING C++ CODE: #include

# File: mlIfElse.asm

# Author: *********

# Date: //

# Purpose: Practice if-else logic

#----------------------------------------------

# WRITE MIPS CODE FOR THE FOLLOWING C++ CODE:

#include

#include

#using namespace std;

#void main()

#{

# //declare variables

# string result;

# int x;

# //prompt for, read in a value for x

# cout << "Please enter a value for x (integer): ";

# cin >> x;

#

# ==========================================================

# //PROBLEM1 - if x has a value of 3 or 4, print "ddd", else print "eee"

# result = "";

# if(x==3 || x==4) result = result + "ddd";

# else result = result + "eee";

# cout << "1.\t" << result << endl;

#

# =============================================================

# //PROBLEM2 - if x is less than 5 and greater than 2,

# // then check to see if it is even. If it is even,

# // print "ddd". If its not even, the original "ccc" is printed.

# // But if x was not less than 5 and greater than 2,

# // print "eee".

# result = "ccc";

# if (x < 5 && x > 2)

# {

# if (x%2 == 0) result = "ddd";

# }

# else result = "eee";

# cout << "2.\t" << result << endl;

#

# ==========================================================

# //PROBLEM3 - if x has a value if 2, print "bbb"

# // if x has a value of 3, print "ccc"

# // if x has a value of 4, print "ddd"

# // if x has a value other than 2, 3, or 4 print "eee"

# result = "";

# switch (x)

# {

# case 2: result = result + "bbb"; break;

# case 3: result = result + "ccc"; break;

# case 4: result = result + "ddd"; break;

# default: result = result + "eee";

# }

# cout << "3.\t" << result << endl;

#

# =========================================================

# //PROBLEM4 - if x has a value of 4, print "ddd"

# // if x has a value of 3, print "ccc"

# // any other value (not 3 or 4), print "eee"

# result = "";

# if (x==4) result = result + "ddd";

# else if (x==3) result = result + "ccc";

# else result = result + "eee";

# cout << "4.\t" << result << endl;

#

# }//end main()

.data

.eqv SYS_PRINT_WORD 1 #word, byte, character

.eqv SYS_PRINT_FLOAT 2 #float

.eqv SYS_PRINT_DOUBLE 3 #double

.eqv SYS_PRINT_TEXT 4 #text (zero terminated)

.eqv SYS_INPUT_WORD 5 #input word

.eqv SYS_EXIT 10 #terminate

# //declare variables

# string result;

# int x;

result: .asciiz "0123456789012345" #max of 16 chars

x: .word 0 # copy of $s5

endl: .asciiz " "

tx_prompt: .asciiz "Please enter a value for x (integer): "

tx_bbb: .asciiz "bbb"

tx_ccc: .asciiz "ccc"

tx_ddd: .asciiz "ddd"

tx_eee: .asciiz "eee"

prob1_label: .asciiz "1.\t"

prob2_label: .asciiz "2.\t"

prob3_label: .asciiz "3.\t"

prob4_label: .asciiz "4.\t"

.text

.globl main

main:

# //prompt for, read in a value for x

# cout << "Please enter a value for x (integer): ";

# cin >> x;

la $a0, tx_prompt # load address of prompt for syscall

li $v0, SYS_PRINT_TEXT # specify Print String service

syscall # print the prompt string

li $v0, SYS_INPUT_WORD # specify Read Integer service

syscall # Read the number. After this instruction, the number read is in $v0.

add $s5, $v0, $zero # transfer the number to s5

la $t0, x

sw $s5, 0($t0) # s5 = x = input word number

la $s4, result # s4 = address of result string

# ==========================================================

# //PROBLEM1 - if x has a value of 3 or 4, print "ddd", else print "eee"

# result = "";

# if(x==3 || x==4) result = result + "ddd";

# else result = result + "eee";

# cout << "1.\t" << result << endl;

#

# =============================================================

# //PROBLEM1

sb $zero, 0($s4) # result = ""

li $t1, 3 # x == 3?

beq $s5, $t1, ddd1 # yes, branch

li $t1, 4 # x == 4?

beq $s5, $t1, ddd1 # yes, branch

eee1: move $a0, $s4 # a0 = aresult

la $a1, tx_eee

jal concatstr

j prt1

ddd1: move $a0, $s4 # a0 = aresult

la $a1, tx_ddd # a1= atx_ddd

jal concatstr

prt1: la $a0, prob1_label

li $v0, SYS_PRINT_TEXT

syscall

move $a0, $s4

li $v0, SYS_PRINT_TEXT

syscall

la $a0, endl

li $v0, SYS_PRINT_TEXT

syscall

# ==========================================================

# //PROBLEM2 - if x is less than 5 and greater than 2,

# // then check to see if it is even. If it is even,

# // print "ddd". If its not even, the original "ccc" is printed.

# // But if x was not less than 5 and greater than 2,

# // print "eee".

# result = "ccc";

# if (x < 5 && x > 2)

# {

# if (x%2 == 0) result = "ddd";

# }

# else result = "eee";

# cout << "2.\t" << result << endl;

# ==========================================================

# //PROBLEM2

addi $t0, $zero, 5

addi $t1, $zero, 2

slt $t2, $s5, $t0

beq $t2, $zero, eee2

slt $t3, $s5, $t1

bne $t3, $zero, eee2

# ==========================================================

# //PROBLEM3 - if x has a value if 2, print "bbb"

# // if x has a value of 3, print "ccc"

# // if x has a value of 4, print "ddd"

# // if x has a value other than 2, 3, or 4 print "eee"

# result = "";

# switch (x)

# {

# case 2: result = result + "bbb"; break;

# case 3: result = result + "ccc"; break;

# case 4: result = result + "ddd"; break;

# default: result = result + "eee";

# }

# cout << "3.\t" << result << endl;

# =========================================================

# //PROBLEM3

# =========================================================

# //PROBLEM4 - if x has a value of 4, print "ddd"

# // if x has a value of 3, print "ccc"

# // any other value (not 3 or 4), print "eee"

# result = "";

# if (x==4) result = result + "ddd";

# else if (x==3) result = result + "ccc";

# else result = result + "eee";

# cout << "4.\t" << result << endl;

# =========================================================i need help with 2, 3, and 4

this is the only reason why i signed up and someone had already posted it and I saw it and I thought it was the full answer but the answer was completely wrong. I need this wriiten in Assembly lang please, just like how problem 1 is written. please help ASAP!

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

PC Magazine Guide To Client Server Databases

Authors: Joe Salemi

1st Edition

156276070X, 978-1562760700

More Books

Students also viewed these Databases questions

Question

y^(2)-2y-15 Enter the correct answer. Done

Answered: 1 week ago