In assembly language how can I find the Square root of matrix A , Cube root of m
ID: 3583182 • Letter: I
Question
In assembly language how can I find the Square root of matrix A , Cube root of matrix A , Median of matrix A and Number/numbers with highest count in matrix A
ORG 400H
MATRIXA: DB a11, a12, a13, a21, a22, a23, a31, a32, a33
ORG 410H
MATRIXB: DB b11, b12, b13, b21, b22, b23, b31, b32, b33
ORG 420H
MATRIXC: DB c11, c12, c13, c21, c22, c23, c31, c32, c33
if the values of matrix A are started from :
ORG 400H
MATRIXA: DB 4, 6, 8, 1, 3, 6, 9, 3, 2
ORG 410H
MATRIX B: DB 2, 4, 7, 4, 5, 7, 3, 1, 1
ORG 420H
MATRIX B: DB 1, 3, 4, 8, 7, 5, 3, 8, 9
the result of each one most be saved in :
ORG 430H
RESULT: DB 0, 0, 0, 0, 0, 0, 0, 0, 0
a1 a2 (13 A 21 22 23 C31 C32 53Explanation / Answer
Answer:
.LC0:
.string "Enter rows and columns of first matrix:"
.LC1:
.string "Enter rows and columns of second matrix:"
.LC2:
.string " Enter first matrix: "
.LC3:
.string " Enter second matrix: "
.LC4:
.string " The new matrix is: "
.LC5:
.string " "
.LC6:
.string " "
.LC7:
.string " Sorry!!!! Matrix multiplication can't be done"
main:
push rbp
mov rbp, rsp
sub rsp, 352
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-340]
mov rsi, rax
mov edi, OFFSET FLAT:std::cin
call std::basic_istream<char, std::char_traits<char> >::operator>>(int&)
mov rdx, rax
lea rax, [rbp-344]
mov rsi, rax
mov rdi, rdx
call std::basic_istream<char, std::char_traits<char> >::operator>>(int&)
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*)
lea rax, [rbp-348]
mov rsi, rax
mov edi, OFFSET FLAT:std::cin
call std::basic_istream<char, std::char_traits<char> >::operator>>(int&)
mov rdx, rax
lea rax, [rbp-352]
mov rsi, rax
mov rdi, rdx
call std::basic_istream<char, std::char_traits<char> >::operator>>(int&)
mov edx, DWORD PTR [rbp-344]
mov eax, DWORD PTR [rbp-348]
cmp edx, eax
jne .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-4], 0
.L6:
mov eax, DWORD PTR [rbp-340]
cmp DWORD PTR [rbp-4], eax
jge .L3
mov DWORD PTR [rbp-8], 0
.L5:
mov eax, DWORD PTR [rbp-344]
cmp DWORD PTR [rbp-8], eax
jge .L4
lea rcx, [rbp-112]
mov eax, DWORD PTR [rbp-8]
movsx rsi, eax
mov eax, DWORD PTR [rbp-4]
movsx rdx, eax
mov rax, rdx
sal rax, 2
add rax, rdx
add rax, rsi
sal rax, 2
add rax, rcx
mov rsi, rax
mov edi, OFFSET FLAT:std::cin
call std::basic_istream<char, std::char_traits<char> >::operator>>(int&)
add DWORD PTR [rbp-8], 1
jmp .L5
.L4:
add DWORD PTR [rbp-4], 1
jmp .L6
.L3:
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 DWORD PTR [rbp-4], 0
.L10:
mov eax, DWORD PTR [rbp-348]
cmp DWORD PTR [rbp-4], eax
jge .L7
mov DWORD PTR [rbp-8], 0
.L9:
mov eax, DWORD PTR [rbp-352]
cmp DWORD PTR [rbp-8], eax
jge .L8
lea rcx, [rbp-224]
mov eax, DWORD PTR [rbp-8]
movsx rsi, eax
mov eax, DWORD PTR [rbp-4]
movsx rdx, eax
mov rax, rdx
sal rax, 2
add rax, rdx
add rax, rsi
sal rax, 2
add rax, rcx
mov rsi, rax
mov edi, OFFSET FLAT:std::cin
call std::basic_istream<char, std::char_traits<char> >::operator>>(int&)
add DWORD PTR [rbp-8], 1
jmp .L9
.L8:
add DWORD PTR [rbp-4], 1
jmp .L10
.L7:
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 DWORD PTR [rbp-4], 0
.L16:
mov eax, DWORD PTR [rbp-340]
cmp DWORD PTR [rbp-4], eax
jge .L11
mov DWORD PTR [rbp-8], 0
.L15:
mov eax, DWORD PTR [rbp-352]
cmp DWORD PTR [rbp-8], eax
jge .L12
mov eax, DWORD PTR [rbp-8]
movsx rcx, eax
mov eax, DWORD PTR [rbp-4]
movsx rdx, eax
mov rax, rdx
sal rax, 2
add rax, rdx
add rax, rcx
mov DWORD PTR [rbp-336+rax*4], 0
mov DWORD PTR [rbp-12], 0
.L14:
mov eax, DWORD PTR [rbp-344]
cmp DWORD PTR [rbp-12], eax
jge .L13
mov eax, DWORD PTR [rbp-8]
movsx rcx, eax
mov eax, DWORD PTR [rbp-4]
movsx rdx, eax
mov rax, rdx
sal rax, 2
add rax, rdx
add rax, rcx
mov ecx, DWORD PTR [rbp-336+rax*4]
mov eax, DWORD PTR [rbp-12]
movsx rsi, eax
mov eax, DWORD PTR [rbp-4]
movsx rdx, eax
mov rax, rdx
sal rax, 2
add rax, rdx
add rax, rsi
mov esi, DWORD PTR [rbp-112+rax*4]
mov eax, DWORD PTR [rbp-8]
movsx rdi, eax
mov eax, DWORD PTR [rbp-12]
movsx rdx, eax
mov rax, rdx
sal rax, 2
add rax, rdx
add rax, rdi
mov eax, DWORD PTR [rbp-224+rax*4]
imul eax, esi
add ecx, eax
mov eax, DWORD PTR [rbp-8]
movsx rsi, eax
mov eax, DWORD PTR [rbp-4]
movsx rdx, eax
mov rax, rdx
sal rax, 2
add rax, rdx
add rax, rsi
mov DWORD PTR [rbp-336+rax*4], ecx
add DWORD PTR [rbp-12], 1
jmp .L14
.L13:
mov eax, DWORD PTR [rbp-8]
movsx rcx, eax
mov eax, DWORD PTR [rbp-4]
movsx rdx, eax
mov rax, rdx
sal rax, 2
add rax, rdx
add rax, rcx
mov eax, DWORD PTR [rbp-336+rax*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:.LC5
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-8], 1
jmp .L15
.L12:
mov esi, OFFSET FLAT:.LC6
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*)
add DWORD PTR [rbp-4], 1
jmp .L16
.L2:
mov esi, OFFSET FLAT:.LC7
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*)
.L11:
mov eax, 0
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
_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
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.