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

Write an assembly language program that allows a user to enter any 5 numbers in

ID: 3581742 • Letter: W

Question

Write an assembly language program that allows a user to enter any 5 numbers in any order then display the largest and smallest entered number and the order from small to large and lareg to small For example Enter: 4, , 2, 7, 9, 6 Display: Largest entered number is: 9 Smallest entered number is: 2 Large to Small: 9, 7, 6, 4, 2 Small to Large: 2, 4, 6, 7, 9

- Please provide source file and sample of output screen shots.

- I need to know if there were any issues with writing the program, and the approach to the solution. Thanks a lot!!! :)

Explanation / Answer

std::piecewise_construct:
.zero 1
.LC0:
.string "enter 5 numbers "
.LC1:
.string "Max value : "
.LC2:
.string "Min value : "
.LC3:
.string "Values from largest to smallest"
.LC4:
.string " "
.LC5:
.string "Values from smallest to largest"
main:
push rbp
mov rbp, rsp
push rbx
sub rsp, 72
mov rax, rsp
mov rbx, rax
mov DWORD PTR [rbp-52], 5
mov eax, DWORD PTR [rbp-52]
cdqe
sub rax, 1
mov QWORD PTR [rbp-64], rax
mov rdx, rax
add rdx, 1
mov r8, rdx
mov r9d, 0
mov rdx, rax
add rdx, 1
mov rsi, rdx
mov edi, 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 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*)
mov DWORD PTR [rbp-20], 0
.L3:
mov eax, DWORD PTR [rbp-20]
cmp eax, DWORD PTR [rbp-52]
jge .L2
mov eax, DWORD PTR [rbp-20]
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&)
add DWORD PTR [rbp-20], 1
jmp .L3
.L2:
mov rax, QWORD PTR [rbp-72]
mov eax, DWORD PTR [rax]
mov DWORD PTR [rbp-24], eax
mov rax, QWORD PTR [rbp-72]
mov eax, DWORD PTR [rax]
mov DWORD PTR [rbp-28], eax
mov DWORD PTR [rbp-76], 0
mov DWORD PTR [rbp-32], 0
.L7:
mov eax, DWORD PTR [rbp-32]
cmp eax, DWORD PTR [rbp-52]
jge .L4
mov rax, QWORD PTR [rbp-72]
mov edx, DWORD PTR [rbp-32]
movsx rdx, edx
mov eax, DWORD PTR [rax+rdx*4]
cmp eax, DWORD PTR [rbp-24]
jle .L5
mov rax, QWORD PTR [rbp-72]
mov edx, DWORD PTR [rbp-32]
movsx rdx, edx
mov eax, DWORD PTR [rax+rdx*4]
mov DWORD PTR [rbp-24], eax
.L5:
mov rax, QWORD PTR [rbp-72]
mov edx, DWORD PTR [rbp-32]
movsx rdx, edx
mov eax, DWORD PTR [rax+rdx*4]
cmp eax, DWORD PTR [rbp-28]
jge .L6
mov rax, QWORD PTR [rbp-72]
mov edx, DWORD PTR [rbp-32]
movsx rdx, edx
mov eax, DWORD PTR [rax+rdx*4]
mov DWORD PTR [rbp-28], eax
.L6:
add DWORD PTR [rbp-32], 1
jmp .L7
.L4:
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 rdx, rax
mov eax, DWORD PTR [rbp-24]
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 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 rdx, rax
mov eax, DWORD PTR [rbp-28]
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 DWORD PTR [rbp-36], 0
.L12:
mov eax, DWORD PTR [rbp-36]
cmp eax, DWORD PTR [rbp-52]
jge .L8
mov eax, DWORD PTR [rbp-36]
add eax, 1
mov DWORD PTR [rbp-40], eax
.L11:
mov eax, DWORD PTR [rbp-40]
cmp eax, DWORD PTR [rbp-52]
jge .L9
mov rax, QWORD PTR [rbp-72]
mov edx, DWORD PTR [rbp-36]
movsx rdx, edx
mov ecx, DWORD PTR [rax+rdx*4]
mov rax, QWORD PTR [rbp-72]
mov edx, DWORD PTR [rbp-40]
movsx rdx, edx
mov eax, DWORD PTR [rax+rdx*4]
cmp ecx, eax
jle .L10
mov rax, QWORD PTR [rbp-72]
mov edx, DWORD PTR [rbp-36]
movsx rdx, edx
mov eax, DWORD PTR [rax+rdx*4]
mov DWORD PTR [rbp-80], eax
mov rax, QWORD PTR [rbp-72]
mov edx, DWORD PTR [rbp-40]
movsx rdx, edx
mov ecx, DWORD PTR [rax+rdx*4]
mov rax, QWORD PTR [rbp-72]
mov edx, DWORD PTR [rbp-36]
movsx rdx, edx
mov DWORD PTR [rax+rdx*4], ecx
mov rax, QWORD PTR [rbp-72]
mov edx, DWORD PTR [rbp-40]
movsx rdx, edx
mov ecx, DWORD PTR [rbp-80]
mov DWORD PTR [rax+rdx*4], ecx
.L10:
add DWORD PTR [rbp-40], 1
jmp .L11
.L9:
add DWORD PTR [rbp-36], 1
jmp .L12
.L8:
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 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 DWORD PTR [rbp-44], 0
.L14:
mov eax, DWORD PTR [rbp-44]
cmp eax, DWORD PTR [rbp-52]
jge .L13
mov rax, QWORD PTR [rbp-72]
mov edx, DWORD PTR [rbp-44]
movsx rdx, edx
mov eax, DWORD PTR [rax+rdx*4]
mov esi, eax
mov edi, OFFSET FLAT:std::cout
call std::basic_ostream<char, std::char_traits<char> >::operator<<(int)
mov esi, OFFSET FLAT:.LC4
mov rdi, rax
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*)
add DWORD PTR [rbp-44], 1
jmp .L14
.L13:
mov esi, OFFSET FLAT:.LC5
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 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, DWORD PTR [rbp-52]
mov DWORD PTR [rbp-48], eax
.L16:
cmp DWORD PTR [rbp-48], 0
js .L15
mov rax, QWORD PTR [rbp-72]
mov edx, DWORD PTR [rbp-48]
movsx rdx, edx
mov eax, DWORD PTR [rax+rdx*4]
mov esi, eax
mov edi, OFFSET FLAT:std::cout
call std::basic_ostream<char, std::char_traits<char> >::operator<<(int)
mov esi, OFFSET FLAT:.LC4
mov rdi, rax
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*)
sub DWORD PTR [rbp-48], 1
jmp .L16
.L15:
mov rsp, rbx
mov eax, 0
mov rbx, QWORD PTR [rbp-8]
leave
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 .L20
cmp DWORD PTR [rbp-8], 65535
jne .L20
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
.L20:
nop
leave
ret
push rbp
mov rbp, rsp
mov esi, 65535
mov edi, 1
call __static_initialization_and_destruction_0(int, int)
pop rbp
ret

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