Hogyan néz ki az alábbi program Assembly-ben?
A program bekér egy N egész számot, majd eldönti róla, hogy prímszám-e és ha prímszám, akkor kiírja, hogy: "ez a szám prímszám", ha pedig nem, prímszám akkor ezt: "Ez a szám nem prímszám". Ékezetek nélkül is lehet, azt nem muszály.
Köszönöm! Nem azért nem én csinálom meg mert lusta vagyok, hanem mert nem tanítják és mégis elvárja a tanár, hogy meglegyen :S
Köszönöm a segítségetek!
0412, 0509-es gyakorlatban, van jópár Assembly példa. Ezeket tanulmányozd át. Nem Olyan nehéz egy prímeldöntős programot írni. Persze mi nem fogjuk neked megcsinálni.
Mi kellhet hozzá? Elágazás, ciklus, és, hogy egy picit gondolkodj.
Szerintem ezen mintaprogramok alapján, ha egy pár órát rászánsz, már mennie kell.
Tessék:
:D C++ -ról lett lefordítva. gcc 8.2 -es verzió
.LC0:
.string "Irj be egy pozitiv egesz szamot: "
.LC1:
.string "Ez egy primszam."
.LC2:
.string "Ez nem primszam."
main:
pushq %rbp
movq %rsp, %rbp
subq $16, %rsp
movb $1, -5(%rbp)
movl $.LC0, %esi
movl $_ZSt4cout, %edi
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*)
leaq -12(%rbp), %rax
movq %rax, %rsi
movl $_ZSt3cin, %edi
call std::basic_istream<char, std::char_traits<char> >::operator>>(int&)
movl $2, -4(%rbp)
.L4:
movl -12(%rbp), %eax
movl %eax, %edx
shrl $31, %edx
addl %edx, %eax
sarl %eax
cmpl %eax, -4(%rbp)
jg .L2
movl -12(%rbp), %eax
cltd
idivl -4(%rbp)
movl %edx, %eax
testl %eax, %eax
jne .L3
movb $0, -5(%rbp)
jmp .L2
.L3:
addl $1, -4(%rbp)
jmp .L4
.L2:
cmpb $0, -5(%rbp)
je .L5
movl $.LC1, %esi
movl $_ZSt4cout, %edi
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*)
jmp .L6
.L5:
movl $.LC2, %esi
movl $_ZSt4cout, %edi
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*)
.L6:
movl $0, %eax
leave
ret
__static_initialization_and_destruction_0(int, int):
pushq %rbp
movq %rsp, %rbp
subq $16, %rsp
movl %edi, -4(%rbp)
movl %esi, -8(%rbp)
cmpl $1, -4(%rbp)
jne .L10
cmpl $65535, -8(%rbp)
jne .L10
movl $_ZStL8__ioinit, %edi
call std::ios_base::Init::Init() [complete object constructor]
movl $__dso_handle, %edx
movl $_ZStL8__ioinit, %esi
movl $_ZNSt8ios_base4InitD1Ev, %edi
call __cxa_atexit
.L10:
nop
leave
ret
_GLOBAL__sub_I_main:
pushq %rbp
movq %rsp, %rbp
movl $65535, %esi
movl $1, %edi
call __static_initialization_and_destruction_0(int, int)
popq %rbp
ret
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!