1 . Start by calling the irvine-crscr\" subroutine, then 2. Write a message aski
ID: 3601560 • Letter: 1
Question
1 . Start by calling the irvine-crscr" subroutine, then 2. Write a message asking for the number of number to add. Irvine “writestring" to display a message. Use the Irvine Readint function read a number and Writelnt to display a number. As you read in numbers store them in an array of fixed number of 100 32 bit numbers 3. Once all the numbers are read into the array print them from the array 4. Wite a procedure to add the odd indexed numbers using the array and 5. Write a message indicating the sum of the odd indexed values is: Use an internal procedure to read the numbers into the array and an internal procedure to print the numbers. store the result in a memory variable named "result" Sample output: How many numbers would you like to add: 5 Enter a number: 10 Enter a number: 25 Enter a number: 10 Enter a number: 25 Enter a number: 50 The numbers printed from the array are: 10, 25, 10, 25, 50 The sum of the numbers stored in odd indexes is: 70Explanation / Answer
.LC0:
.string "How many numbers would you like to add: "
.LC1:
.string "Enter a number: "
.LC2:
.string "The numbers printed from the array are: "
.LC3:
.string " "
.LC4:
.string "The sum of the numbers stored in the odd indexes is :"
main:
push rbp
mov rbp, rsp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 40
mov rax, rsp
mov rbx, rax
mov DWORD PTR [rbp-56], 0
mov esi, OFFSET FLAT:.LC0
mov edi, OFFSET FLAT:std::cout
call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
lea rax, [rbp-76]
mov rsi, rax
mov edi, OFFSET FLAT:std::cin
call std::basic_istream<char, std::char_traits<char> >::operator>>(int&)
mov esi, OFFSET FLAT:std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)
mov edi, OFFSET FLAT:std::cout
call 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> >&))
mov eax, DWORD PTR [rbp-76]
cdqe
sub rax, 1
mov QWORD PTR [rbp-64], rax
mov rdx, rax
add rdx, 1
mov r14, rdx
mov r15d, 0
mov rdx, rax
add rdx, 1
mov r12, rdx
mov r13d, 0
add rax, 1
sal rax, 2
lea rdx, [rax+3]
mov eax, 16
sub rax, 1
add rax, rdx
mov ecx, 16
mov edx, 0
div rcx
imul rax, rax, 16
sub rsp, rax
mov rax, rsp
add rax, 3
shr rax, 2
sal rax, 2
mov QWORD PTR [rbp-72], rax
mov DWORD PTR [rbp-52], 1
.L3:
mov eax, DWORD PTR [rbp-76]
cmp DWORD PTR [rbp-52], eax
jg .L2
mov esi, OFFSET FLAT:.LC1
mov edi, OFFSET FLAT:std::cout
call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
mov eax, DWORD PTR [rbp-52]
cdqe
lea rdx, [0+rax*4]
mov rax, QWORD PTR [rbp-72]
add rax, rdx
mov rsi, rax
mov edi, OFFSET FLAT:std::cin
call std::basic_istream<char, std::char_traits<char> >::operator>>(int&)
mov esi, OFFSET FLAT:std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)
mov edi, OFFSET FLAT:std::cout
call 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> >&))
add DWORD PTR [rbp-52], 1
jmp .L3
.L2:
mov esi, OFFSET FLAT:.LC2
mov edi, OFFSET FLAT:std::cout
call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
mov DWORD PTR [rbp-52], 1
.L5:
mov eax, DWORD PTR [rbp-76]
cmp DWORD PTR [rbp-52], eax
jg .L4
mov esi, OFFSET FLAT:.LC3
mov edi, OFFSET FLAT:std::cout
call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
mov rcx, rax
mov rax, QWORD PTR [rbp-72]
mov edx, DWORD PTR [rbp-52]
movsx rdx, edx
mov eax, DWORD PTR [rax+rdx*4]
mov esi, eax
mov rdi, rcx
call std::basic_ostream<char, std::char_traits<char> >::operator<<(int)
add DWORD PTR [rbp-52], 1
jmp .L5
.L4:
mov esi, OFFSET FLAT:std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)
mov edi, OFFSET FLAT:std::cout
call 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> >&))
mov DWORD PTR [rbp-52], 1
.L8:
mov eax, DWORD PTR [rbp-76]
cmp DWORD PTR [rbp-52], eax
jg .L6
mov eax, DWORD PTR [rbp-52]
cdq
shr edx, 31
add eax, edx
and eax, 1
sub eax, edx
cmp eax, 1
jne .L7
mov rax, QWORD PTR [rbp-72]
mov edx, DWORD PTR [rbp-52]
movsx rdx, edx
mov eax, DWORD PTR [rax+rdx*4]
add DWORD PTR [rbp-56], eax
.L7:
add DWORD PTR [rbp-52], 1
jmp .L8
.L6:
mov esi, OFFSET FLAT:.LC4
mov edi, OFFSET FLAT:std::cout
call std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)
mov rdx, rax
mov eax, DWORD PTR [rbp-56]
mov esi, eax
mov rdi, rdx
call std::basic_ostream<char, std::char_traits<char> >::operator<<(int)
mov esi, OFFSET FLAT:std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)
mov rdi, rax
call 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> >&))
mov eax, 0
mov rsp, rbx
lea rsp, [rbp-40]
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
__static_initialization_and_destruction_0(int, int):
push rbp
mov rbp, rsp
sub rsp, 16
mov DWORD PTR [rbp-4], edi
mov DWORD PTR [rbp-8], esi
cmp DWORD PTR [rbp-4], 1
jne .L12
cmp DWORD PTR [rbp-8], 65535
jne .L12
mov edi, OFFSET FLAT:std::__ioinit
call std::ios_base::Init::Init()
mov edx, OFFSET FLAT:__dso_handle
mov esi, OFFSET FLAT:std::__ioinit
mov edi, OFFSET FLAT:std::ios_base::Init::~Init()
call __cxa_atexit
.L12:
nop
leave
ret
_GLOBAL__sub_I_main:
push rbp
mov rbp, rsp
mov esi, 65535
mov edi, 1
call __static_initialization_and_destruction_0(int, int)
pop rbp
ret
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.