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

Asseembly language Project: There are important equations in logical expression:

ID: 3844138 • Letter: A

Question

Asseembly language Project:

There are important equations in logical expression: Morgan's Law 1: .NOT. (A. OR. B) = (.NOT. A) .AND. (.NOT. B) Morgan' Law II:, NOT.(A .AND. B) = (.NOT. A) OR.(.NOT.B) Write, for each law, an AL program which 'proves' the two laws are true for all possible values of A and B. A .AND. (B .OR. C) = (A .AND. B) .OR. (A .AND. C) is referred to as the "distributive law. Write, AL program which 'proves' the law is true for all possible values of A, B, C. Two positive different integer numbers are said to be relatively prime if both numbers have no common divisors other than the number 1. Examples The numbers 51, 32 are relatively prime since they have no common divisors. The numbers 22, 40 are not relatively prime since 2 divides both numbers. Write an assembly language algorithm that will find out if 1048576, 387420489 are relatively prime.

Explanation / Answer

Assembly code : X86-64 gcc 7.1

.LC0:
.string "enter two values to find for relative prime or co prime "
.LC1:
.string "relatively prime or co prime numbers ."
.LC2:
.string "not relatively prime or co prime numbers ."
main:
push rbp
mov rbp, rsp
sub rsp, 16
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 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> >&))
lea rax, [rbp-8]
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-12]
mov rsi, rax
mov rdi, rdx
call std::basic_istream<char, std::char_traits<char> >::operator>>(int&)
mov edx, DWORD PTR [rbp-12]
mov eax, DWORD PTR [rbp-8]
mov esi, edx
mov edi, eax
call hcf(int, int)
mov DWORD PTR [rbp-4], eax
cmp DWORD PTR [rbp-4], 1
jne .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 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> >&))
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 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> >&))
.L3:
mov eax, 0
leave
ret
hcf(int, int):
push rbp
mov rbp, rsp
mov DWORD PTR [rbp-20], edi
mov DWORD PTR [rbp-24], esi
.L8:
mov eax, DWORD PTR [rbp-20]
cdq
idiv DWORD PTR [rbp-24]
mov DWORD PTR [rbp-4], edx
cmp DWORD PTR [rbp-4], 0
jne .L6
mov eax, DWORD PTR [rbp-24]
jmp .L9
.L6:
mov eax, DWORD PTR [rbp-24]
mov DWORD PTR [rbp-20], eax
mov eax, DWORD PTR [rbp-4]
mov DWORD PTR [rbp-24], eax
jmp .L8
.L9:
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

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