Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Write assembly language program that corresponds to the following C++ program: (

ID: 3860325 • Letter: W

Question

Write assembly language program that corresponds to the following C++ program: (in pep8)

#include <iostream>

using namespace std;

char ch;

int main()

{ cin>>ch;

ch--;

cout<<ch<<end1;

return 0; }

-----------------------------------------------------------

#include

using namespace std;
int num1;
int num2;
main ( ) {
cin >> num1 >> num2;
cout << num2 << endl << num1 << endl ;
return 0;
}

------------------------------

#include <iostream>
using namespace std;

int num;

int main () {

cin >> num;
num = num % 16;
cout << "num = " << num << endl;
return 0;

}

Explanation / Answer

C++ program ----------->

#include <iostream>

using namespace std;

char ch;

int main()

{ cin>>ch;

ch--;

cout<<ch<<end1;

return 0; }

Assembly language program that corresponds to the above C++ program-------->

ch:

$LFB1024 = .

main:

addiu $sp,$sp,-32

sw $31,28($sp)

sw $fp,24($sp)

move $fp,$sp

lui $2,%hi(ch)

addiu $5,$2,%lo(ch)

lui $2,%hi(std::cin)

addiu $4,$2,%lo(std::cin)

jal std::basic_istream<char, std::char_traits<char> >& std::operator>><char, std::char_traits<char> >(std::basic_istream<char, std::char_traits<char> >&, char&)

nop

lui $2,%hi(ch)

lb $2,%lo(ch)($2)

nop

andi $2,$2,0x00ff

addiu $2,$2,-1

andi $2,$2,0x00ff

sll $3,$2,24

sra $3,$3,24

lui $2,%hi(ch)

sb $3,%lo(ch)($2)

lui $2,%hi(ch)

lb $2,%lo(ch)($2)

nop

move $5,$2

lui $2,%hi(std::cout)

addiu $4,$2,%lo(std::cout)

jal std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char)

nop

move $3,$2

lui $2,%hi(std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&))

addiu $5,$2,%lo(std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&))

move $4,$3

jal std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))

nop

move $2,$0

move $sp,$fp

lw $31,28($sp)

lw $fp,24($sp)

addiu $sp,$sp,32

j $31

nop

$LFB1031 = .

__static_initialization_and_destruction_0(int, int):

addiu $sp,$sp,-32

sw $31,28($sp)

sw $fp,24($sp)

move $fp,$sp

sw $4,32($fp)

sw $5,36($fp)

lw $3,32($fp)

li $2,1 # 0x1

bne $3,$2,$L5

nop

lw $3,36($fp)

li $2,65535 # 0xffff

bne $3,$2,$L5

nop

lui $2,%hi(std::__ioinit)

addiu $4,$2,%lo(std::__ioinit)

jal std::ios_base::Init::Init()

nop

lui $2,%hi(__dso_handle)

addiu $6,$2,%lo(__dso_handle)

lui $2,%hi(std::__ioinit)

addiu $5,$2,%lo(std::__ioinit)

lui $2,%hi(std::ios_base::Init::~Init())

addiu $4,$2,%lo(std::ios_base::Init::~Init())

jal __cxa_atexit

nop

nop

move $sp,$fp

lw $31,28($sp)

lw $fp,24($sp)

addiu $sp,$sp,32

j $31

nop

$LFB1032 = .

_GLOBAL__sub_I_ch:

addiu $sp,$sp,-32

sw $31,28($sp)

sw $fp,24($sp)

move $fp,$sp

li $5,65535 # 0xffff

li $4,1 # 0x1

jal __static_initialization_and_destruction_0(int, int)

nop

move $sp,$fp

lw $31,28($sp)

lw $fp,24($sp)

addiu $sp,$sp,32

j $31

nop

-------------------------------------------------------------------------------------------------------------------------

C++ Program ------------>

#include <iostream>

using namespace std;

int num1;

int num2;

main ( ) {

cin >> num1 >> num2;

cout << num2 << endl << num1 << endl ;

return 0;

}

Assembly language program that corresponds to the above C++ program --------->

num1:

num2:

$LFB1024 = .

main:

addiu $sp,$sp,-32

sw $31,28($sp)

sw $fp,24($sp)

move $fp,$sp

lui $2,%hi(num1)

addiu $5,$2,%lo(num1)

lui $2,%hi(std::cin)

addiu $4,$2,%lo(std::cin)

jal std::basic_istream<char, std::char_traits<char> >::operator>>(int&)

nop

move $3,$2

lui $2,%hi(num2)

addiu $5,$2,%lo(num2)

move $4,$3

jal std::basic_istream<char, std::char_traits<char> >::operator>>(int&)

nop

lui $2,%hi(num2)

lw $2,%lo(num2)($2)

nop

move $5,$2

lui $2,%hi(std::cout)

addiu $4,$2,%lo(std::cout)

jal std::basic_ostream<char, std::char_traits<char> >::operator<<(int)

nop

move $3,$2

lui $2,%hi(std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&))

addiu $5,$2,%lo(std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&))

move $4,$3

jal std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))

nop

move $3,$2

lui $2,%hi(num1)

lw $2,%lo(num1)($2)

nop

move $5,$2

move $4,$3

jal std::basic_ostream<char, std::char_traits<char> >::operator<<(int)

nop

move $3,$2

lui $2,%hi(std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&))

addiu $5,$2,%lo(std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&))

move $4,$3

jal std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))

nop

move $2,$0

move $sp,$fp

lw $31,28($sp)

lw $fp,24($sp)

addiu $sp,$sp,32

j $31

nop

$LFB1030 = .

__static_initialization_and_destruction_0(int, int):

addiu $sp,$sp,-32

sw $31,28($sp)

sw $fp,24($sp)

move $fp,$sp

sw $4,32($fp)

sw $5,36($fp)

lw $3,32($fp)

li $2,1 # 0x1

bne $3,$2,$L5

nop

lw $3,36($fp)

li $2,65535 # 0xffff

bne $3,$2,$L5

nop

lui $2,%hi(std::__ioinit)

addiu $4,$2,%lo(std::__ioinit)

jal std::ios_base::Init::Init()

nop

lui $2,%hi(__dso_handle)

addiu $6,$2,%lo(__dso_handle)

lui $2,%hi(std::__ioinit)

addiu $5,$2,%lo(std::__ioinit)

lui $2,%hi(std::ios_base::Init::~Init())

addiu $4,$2,%lo(std::ios_base::Init::~Init())

jal __cxa_atexit

nop

nop

move $sp,$fp

lw $31,28($sp)

lw $fp,24($sp)

addiu $sp,$sp,32

j $31

nop

$LFB1031 = .

_GLOBAL__sub_I_num1:

addiu $sp,$sp,-32

sw $31,28($sp)

sw $fp,24($sp)

move $fp,$sp

li $5,65535 # 0xffff

li $4,1 # 0x1

jal __static_initialization_and_destruction_0(int, int)

nop

move $sp,$fp

lw $31,28($sp)

lw $fp,24($sp)

addiu $sp,$sp,32

j $31

nop

-----------------------------------------------------------------------------------------------------------------------

C++ program ---------->

#include <iostream>

using namespace std;

int num;

int main () {

cin >> num;

num = num % 16;

cout << "num = " << num << endl;

return 0;

}

Assembly language program that corresponds to the above C++ program ------->

num:

.ascii "num = "

$LFB1024 = .

main:

addiu $sp,$sp,-32

sw $31,28($sp)

sw $fp,24($sp)

move $fp,$sp

lui $2,%hi(num)

addiu $5,$2,%lo(num)

lui $2,%hi(std::cin)

addiu $4,$2,%lo(std::cin)

jal std::basic_istream<char, std::char_traits<char> >::operator>>(int&)

nop

lui $2,%hi(num)

lw $3,%lo(num)($2)

li $2,-2147483648 # 0xffffffff80000000

ori $2,$2,0xf

and $2,$3,$2

bgez $2,$L2

nop

addiu $2,$2,-1

li $3,-16 # 0xfffffffffffffff0

or $2,$2,$3

addiu $2,$2,1

move $3,$2

lui $2,%hi(num)

sw $3,%lo(num)($2)

lui $2,%hi($LC0)

addiu $5,$2,%lo($LC0)

lui $2,%hi(std::cout)

addiu $4,$2,%lo(std::cout)

jal std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)

nop

move $3,$2

lui $2,%hi(num)

lw $2,%lo(num)($2)

nop

move $5,$2

move $4,$3

jal std::basic_ostream<char, std::char_traits<char> >::operator<<(int)

nop

move $3,$2

lui $2,%hi(std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&))

addiu $5,$2,%lo(std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&))

move $4,$3

jal std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))

nop

move $2,$0

move $sp,$fp

lw $31,28($sp)

lw $fp,24($sp)

addiu $sp,$sp,32

j $31

nop

$LFB1033 = .

__static_initialization_and_destruction_0(int, int):

addiu $sp,$sp,-32

sw $31,28($sp)

sw $fp,24($sp)

move $fp,$sp

sw $4,32($fp)

sw $5,36($fp)

lw $3,32($fp)

li $2,1 # 0x1

bne $3,$2,$L6

nop

lw $3,36($fp)

li $2,65535 # 0xffff

bne $3,$2,$L6

nop

lui $2,%hi(std::__ioinit)

addiu $4,$2,%lo(std::__ioinit)

jal std::ios_base::Init::Init()

nop

lui $2,%hi(__dso_handle)

addiu $6,$2,%lo(__dso_handle)

lui $2,%hi(std::__ioinit)

addiu $5,$2,%lo(std::__ioinit)

lui $2,%hi(std::ios_base::Init::~Init())

addiu $4,$2,%lo(std::ios_base::Init::~Init())

jal __cxa_atexit

nop

nop

move $sp,$fp

lw $31,28($sp)

lw $fp,24($sp)

addiu $sp,$sp,32

j $31

nop

$LFB1034 = .

_GLOBAL__sub_I_num:

addiu $sp,$sp,-32

sw $31,28($sp)

sw $fp,24($sp)

move $fp,$sp

li $5,65535 # 0xffff

li $4,1 # 0x1

jal __static_initialization_and_destruction_0(int, int)

nop

move $sp,$fp

lw $31,28($sp)

lw $fp,24($sp)

addiu $sp,$sp,32

j $31

nop

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote