asssembly

0.0(0)
studied byStudied by 0 people
0.0(0)
full-widthCall Kai
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
GameKnowt Play
Card Sorting

1/91

flashcard set

Earn XP

Description and Tags

átmegyek még ha megszülök is

Study Analytics
Name
Mastery
Learn
Test
Matching
Spaced

No study sessions yet.

92 Terms

1
New cards

Mi a különbség a MOV EAX, [EBX] és a LEA EAX, [EBX] között?

A MOV kiolvassa az adatot a memóriából. A LEA csak kiszámolja a címet (a szögletes zárójel tartalmát), de nem nyúl a memóriához (gyakran használják gyors matekra).

2
New cards

Hány operandusa van a MUL utasításnak az assembly kódban, és hol keletkezik az eredmény (16 bites esetben)?

Csak egy operandusa van (a szorzó). A szorzandó implicit módon az AX. Az eredmény a DX:AX regiszterpárba kerül (32 biten).

3
New cards

MOV vs. LEA különbség?

A MOV kiolvassa az adatot a memóriából. A LEA csak kiszámolja a memóriacímet (vagy matematikai műveletet végez), de nem nyúl a memóriához.

4
New cards

Hány operandusa van a MUL utasításnak?

Csak 1 (a szorzó). A szorzandó implicit módon az AX (16 bit) vagy EAX (32 bit).

5
New cards

Hová kerül a 16 bites MUL eredménye?

A DX:AX regiszterpárba (felső 16 bit: DX, alsó 16 bit: AX).

6
New cards

Mit csinál a CMP utasítás?

Kivonást végez (Cél - Forrás), de nem menti el az eredményt, csak a Flageket (jelzőbiteket) állítja be.

7
New cards

Mire való a CDQ utasítás?

Az EAX előjelét kiterjeszti az EDX-re (EDX:EAX), hogy előkészítse az előjeles osztást (IDIV).

8
New cards

Mire való a CBW utasítás?

Az AL (8 bit) előjelét kiterjeszti az AX-re (16 bit).

9
New cards

LES utasítás működése?

Betölt egy távoli mutatót: az Offsetet a megadott regiszterbe, a Szegmenst pedig az ES (Extra Segment) regiszterbe tölti.

10
New cards

Melyik irányba nő a verem (Stack) x86-on?

A magas memóriacímektől az alacsony címek felé (lefelé).

11
New cards

ESP regiszter feladata?

Stack Pointer: Mindig a verem legtetejére (a legutóbb betett elemre) mutat.

12
New cards

EBP regiszter feladata?

Base Pointer: A veremkeret bázisa. Ehhez képest érjük el a paramétereket (pl. EBP+8) és lokális változókat (pl. EBP-4).

13
New cards

Melyik regiszter tárolja a visszatérési értéket?

Az EAX regiszter.

14
New cards

ECX regiszter tipikus szerepe?

Counter (Számláló): Ciklusoknál (LOOP) és string műveleteknél (REP) használják.

15
New cards

ESI és EDI regiszterek szerepe?

String műveleteknél az ESI a Forrás (Source) index, az EDI a Cél (Destination) index.

16
New cards

Melyik ugrást használjuk előjeles (SIGNED) "nagyobb" vizsgálathoz?

JG (Jump if Greater).

17
New cards

Melyik ugrást használjuk előjel nélküli (UNSIGNED) "nagyobb" vizsgálathoz?

JA (Jump if Above).

18
New cards

Melyik ugrást használjuk előjeles (SIGNED) "kisebb" vizsgálathoz?

JL (Jump if Less).

19
New cards

Melyik ugrást használjuk előjel nélküli (UNSIGNED) "kisebb" vizsgálathoz?

JB (Jump if Below).

20
New cards

JE (Jump if Equal) feltétele?

Akkor ugrik, ha a Zero Flag (ZF) értéke 1 (azaz az összehasonlítás eredménye egyenlő volt).

21
New cards

Melyik flag jelzi az előjel nélküli túlcsordulást?

CF (Carry Flag).

22
New cards

Melyik flag jelzi az előjeles túlcsordulást?

OF (Overflow Flag).

23
New cards

MOVSX jelentése?

Move with Sign Extend: Előjelhelyes kiterjesztés (az előjelbitet másolja a felső bitekre).

24
New cards

MOVZX jelentése?

Move with Zero Extend: Nullás kiterjesztés (nullákkal tölti fel a felső biteket).

25
New cards

SHL (Shift Left) matematikai megfelelője?

Szorzás 2-vel.

26
New cards

SAR (Shift Arithmetic Right) különlegessége?

Jobbra tolásnál megőrzi az eredeti előjelbitet (negatív szám negatív marad).

27
New cards

Mit csinál a "xor eax, eax"?

Nullázza az EAX regisztert (gyorsabb, mint a mov eax, 0).

28
New cards

Mit csinál az "and edi, 0xff"?

Maszkolás: Csak az alsó 8 bitet hagyja meg az EDI-ben, a többit törli.

29
New cards

Mit csinál a SETZ (vagy SETE) utasítás?

Ha a Zero Flag aktív (1), akkor a célregisztert 1-re állítja, egyébként 0-ra.

30
New cards

Mi történik PUSH utasításkor az ESP-vel?

Az ESP értéke csökken (a verem lefelé nő), majd az adat beíródik a memóriába.

31
New cards

EIP regiszter feladata?

Instruction Pointer: A következő végrehajtandó utasítás címét tárolja.

32
New cards

Melyik regisztert használják a portok írására/olvasására (I/O)?

Az EAX (vagy AL/AX) regisztert.

33
New cards

JMP utasítás típusa?

Feltétel nélküli ugrás (Unconditional Jump).

34
New cards

Mi a különbség a TEST és az AND utasítás között?

A TEST elvégzi az AND műveletet a flagek beállításához, de NEM menti el az eredményt (hasonlóan, mint a CMP a kivonásnál).

35
New cards

Mit jelent a 0x80000000 érték 32 bites előjeles számként?

A legkisebb ábrázolható negatív szám (INT_MIN).

36
New cards

Mit jelent a 0x7FFFFFFF érték 32 bites előjeles számként?

A legnagyobb ábrázolható pozitív szám (INT_MAX).

37
New cards

Mit csinál ez a kód? "mov ecx, 10" -> "label: dec ecx" -> "jnz label"

Egy ciklust valósít meg, ami 10-szer fut le (amíg ECX nem lesz 0).

38
New cards

Mit csinál ez a kód? "cmp eax, 0" -> "jge skip" -> "neg eax" -> "skip: ret"

Kiszámolja az EAX abszolút értékét (ha negatív, pozitívvá teszi).

39
New cards

Mit csinál ez a kód? "xor eax, eax" -> "ret"

A függvény visszatérési értékét (EAX) 0-ra állítja (pl. return 0; C-ben).

40
New cards

Melyik állítás igaz a "while" ciklus assembly implementációjára?

A feltétel ellenőrzése a ciklusmag ELŐTT történik (ha hamis, egyszer sem fut le).

41
New cards

Melyik állítás igaz a "do-while" ciklus assembly implementációjára?

A feltétel ellenőrzése a ciklusmag VÉGÉN történik (egyszer mindenképpen lefut).

42
New cards

Mit csinál ez a kód? "test eax, eax" -> "jz label"

Megvizsgálja, hogy EAX értéke nulla-e (anélkül, hogy módosítaná).

43
New cards

Ha EAX = 5 és EBX = 5, mi lesz az eredménye a "CMP EAX, EBX" után a ZF (Zero Flag)-nek?

ZF = 1 (mivel a kivonás eredménye 0).

44
New cards

Mi a különbség a "NEG EAX" és a "NOT EAX" között?

A NOT csak a biteket fordítja meg (1-es komplemens), a NEG matematikailag vált előjelet (2-es komplemens, azaz NOT + 1).

45
New cards

Mit csinál ez a kód? "push ebp" -> "mov ebp, esp"

Ez a függvények szabványos bevezetése (prológus): elmenti a hívó bázisát és beállítja az új veremkeretet.

46
New cards

Melyik utasítássorozat felel meg a "x = y" műveletnek (ahol x és y memóriaváltozók)?

mov eax, [y] -> mov [x], eax (Közvetlenül memória-memória másolás nem lehetséges!).

47
New cards

Hogyan tárolja a memóriában az x86 a 0x12345678 értéket (Little Endian)?

Fordított byte-sorrendben: 78 56 34 12.

48
New cards

Mit csinál ez a kód? "shl eax, 2"

Megszorozza az EAX értékét 4-gyel (2 a másodikon).

49
New cards

Mit csinál ez a kód? "shr eax, 1"

Elosztja az EAX értékét 2-vel (előjel nélküli osztás).

50
New cards

Melyik regisztert "rontja el" (módosítja) a MUL utasítás az EAX-en kívül?

Az EDX regisztert (ide kerül a szorzat felső része).

51
New cards

Mit jelent, ha a "JNZ" (Jump if Not Zero) utasítás ugrik?

Azt, hogy az előző művelet eredménye NEM nulla volt (ZF = 0).

52
New cards

Mi történik a veremmel a "RET" utasítás hatására?

A processzor kiveszi (POP) a visszatérési címet a verem tetejéről az EIP-be, és oda ugrik.

53
New cards

Melyik utasítás a C nyelvű "switch" szerkezet alapja assemblyben?

Gyakran egy "JMP" táblázat (Jump Table) vagy több "CMP / JE" sorozat.

54
New cards

Mit csinál ez a kód? "inc eax"

Megnöveli az EAX értékét 1-gyel (gyorsabb és rövidebb, mint az add eax, 1).

55
New cards

Mi a "Buffer Overflow" (puffer-túlcsordulás) assembly szintű oka?

Ha több adatot írunk a verembe (pl. egy lokális tömbbe), mint amennyi hely van, és felülírjuk a visszatérési címet.

56
New cards

Mit csinál ez a kód? "sub esp, 8" a függvény elején?

Helyet foglal a veremben lokális változóknak (8 bájtnyit).

57
New cards

Mit csinál a kód? "func: cmp edi, 0" -> "jl label" -> "mov eax, 1" -> "ret" -> "label: mov eax, -1" -> "ret"

Előjel-függvény (Signum): 1-et ad vissza ha pozitív/nulla, és -1-et ha negatív.

58
New cards

Melyik utasítás NEM módosítja a Flageket (jelzőbiteket)?

A MOV és a LEA (a legtöbb más, pl. ADD, SUB, AND, TEST módosítja).

59
New cards

Mit csinál ez a kód? "mov eax, 5" -> "mov ecx, 3" -> "xchg eax, ecx"

Megcseréli a két regiszter tartalmát (EAX lesz 3, ECX lesz 5).

60
New cards

Hogyan működik a CALL utasítás?

Elmenti a visszatérési címet (a következő utasítás címét) a verembe (PUSH EIP), majd elugrik a megadott címre.

61
New cards

Mi történik, ha egy függvényben több PUSH van, mint POP a RET előtt?

A verem "kiegyensúlyozatlan" lesz, a RET rossz címet vesz ki, és a program valószínűleg összeomlik (segfault).

62
New cards

Mit csinál a "test eax, 1" -> "jz paros" kódrészlet?

Megvizsgálja, hogy a szám páros-e (az utolsó bit 0). Ha páros, ugrik.

63
New cards

Melyik utasítás NEM végez írást a célregiszterbe: SUB vagy CMP?

A CMP (csak a flageket állítja).

64
New cards

Melyik utasítás NEM végez írást a célregiszterbe: AND vagy TEST?

A TEST (csak a flageket állítja).

65
New cards

Mekkora méretű adatot jelöl a "BYTE PTR"?

8 bit (1 bájt).

66
New cards

Mekkora méretű adatot jelöl a "WORD PTR"?

16 bit (2 bájt).

67
New cards

Mekkora méretű adatot jelöl a "DWORD PTR"?

32 bit (4 bájt / dupla szó).

68
New cards

Mit csinál a LOOP címke utasítás?

Csökkenti az ECX értékét 1-gyel, és ha az nem 0, visszaugrik a címkére (automatikus ciklusvezérlő).

69
New cards

Melyik regiszterpárban kell elhelyezni az osztandót 32 bites osztásnál (IDIV)?

Az EDX:EAX regiszterpárban (64 biten).

70
New cards

Mit jelent a [EAX] kifejezés (szögletes zárójelben)?

Az EAX-ben tárolt memóriacímen lévő értéket (dereferenciálás / pointer követés).

71
New cards

Mit csinál ez a kód? "mov eax, [ebp+8]"

Általában a függvény első paraméterét tölti be a veremből az EAX-be.

72
New cards

Mit csinál a NOP utasítás?

No Operation: Nem csinál semmit, csak időt/helyet foglal (pl. paddinghez vagy késleltetéshez).

73
New cards

Hogyan tárolja a számítógép a negatív egész számokat?

Kettes komplemens (Two's complement) formában.

74
New cards

Mit csinál a REP prefix (pl. REP MOVSB)?

Addig ismétli a string utasítást, amíg az ECX regiszter értéke 0 nem lesz.

75
New cards

Melyik regiszter az AX regiszter felső 8 bitje?

AH (Accumulator High).

76
New cards

Melyik regiszter az AX regiszter alsó 8 bitje?

AL (Accumulator Low).

77
New cards

Mit csinál ez a függvény? "cmp eax, ebx" -> "jge skip" -> "mov eax, ebx" -> "skip: ret"

Kiválasztja a két szám közül a nagyobbat (Maximum kiválasztás). Ha EAX < EBX, felülírja EAX-et EBX-szel.

78
New cards

Mi a különbség a "JMP" és a "CALL" között?

A JMP csak odaugrik (nem tud visszajönni), a CALL elmenti a visszatérési címet a verembe, hogy a RET utasítással vissza lehessen térni.

79
New cards

Igaz vagy Hamis: A verem (Stack) LIFO (Last In First Out) szerkezetű?

Igaz.

80
New cards

Melyik utasítás fordítja meg az összes bitet (0->1, 1->0) egy regiszterben?

NOT.

81
New cards

Melyik utasítás váltja meg egy szám előjelét (pl. 5-ből -5)?

NEG (ez matematikailag: NOT + 1).

82
New cards

Mit csinál a "sub eax, eax"?

Nullázza az EAX regisztert (ugyanaz a hatása, mint a xor eax, eax).

83
New cards

Mit csinál az LDS utasítás (az LES párja)?

Hasonló az LES-hez, de a távoli mutató szegmens részét a DS (Data Segment) regiszterbe tölti.

84
New cards

Melyik két Flag-et törli (állítja 0-ra) mindig az AND utasítás?

Az Overflow Flag-et (OF) és a Carry Flag-et (CF).

85
New cards

Lehetséges-e az "add [var1], [var2]" utasítás (memória hozzáadása memóriához)?

Nem, az x86 utasításoknál egyszerre legfeljebb egy operandus lehet memória.

86
New cards

Mit jelent az LEA utasítás nevében az "Effective Address"?

Azt a tényleges memóriacímet, amit a processzor kiszámol az alapcím, index és eltolás alapján.

87
New cards

Mit csinál a CDQE utasítás (64 bites módban)?

A CDQ "nagytestvére": Az EAX (32 bit) előjelét terjeszti ki az RAX (64 bit) regiszterre.

88
New cards

Melyik utasítás a "párja" a JGE (Jump Greater or Equal) utasításnak a SET utasítások közül?

A SETGE (Set if Greater or Equal) - 1-re állítja a bájtot, ha a feltétel igaz.

89
New cards

Mikor használunk MUL-t és mikor IMUL-t?

MUL: Előjel nélküli (unsigned) számokhoz. IMUL: Előjeles (signed) számokhoz.

90
New cards

Melyik flag jelzi, ha egy művelet eredménye negatív lett (signed értelmezésben)?

SF (Sign Flag).

91
New cards

Mi a különbség a "JMP" és a feltételes ugrások (pl. JZ) hatóköre között régebbi processzoroknál?

A feltételes ugrások gyakran csak rövid távolságra (short jump) tudtak ugrani, míg a JMP messzebbre is.

92
New cards

Miért nevezzük az EAX, EBX, ECX, EDX regisztereket "általános célúnak"?

Mert bár vannak speciális feladataik (pl. ECX ciklushoz), a legtöbb utasításban bármelyiket használhatjuk adattárolásra.