Cikkek - feldolgozók - helyesírás tét kód

Az apokrif hagyomány azt mondja, hogy ő nem volt ellene Baal kényeztesse szabadprogram szerelő még nem írt rá a BASIC. Tehát miért ne ezt?

Az utolsó fejezet kötet, megígértem, hogy megmondja, hogyan lehet megidézni NOP utasítás. Ez egyszerű, és mindezt megteheti, a tulajdonában alapjait szerelvény. De először meg kell tudni, mi a műveleti kód. Sőt, biztos vagyok benne, hogy szinte bárki, aki vette fel a vizsgálat során a kód varázslatokat tudja, mi ez, de mégis, mondd meg, ha valaki nem tudja.

Ahogy te is tisztában van, összeszerelő lefordítani utasításokat érthető és emlékezetes (emlékeztető) emberi formát olyan formára érthető számítógépek - a gépi kódot. Az utasítások gépi kódban van egy adott méret és áll a több területen, amelyek nagy része a műveleti kód - műveleti kód. Néhány egyszerű utasításokat, kizárólag az alábbiak egy műveleti kód és más területeken, hogy nem.

Egy ilyen utasítás van NOP. Her opkódot - 90h. Ez az utasítás nincsenek paraméterei, így opkódot tudás elég a varázslatot. Itt egy példa program:

Remélem az olvasók ebben a fejezetben, az utolsó napi charmers, nem kérdés, hogy miért ez a program nem csinál semmit. Azok számára, akik nem merülnek fel, azt magyarázza: NOP utasítás nem csinál semmit (ezért mnemnonika - Nem műveletek). Hogy pontosabbak legyünk, a NOP azonos műveleti kód: oktatás xchg EAX, EAX, de az eredmény (nincs változás) nem változik.

De NOP - ez nem nagyon érdekes. Természetesen a varázslat inspirálja az első, de a gyakorlatban ez nem túl hasznos. Jó lenne, ha tudnánk varázsolni valami hasznosabb - például növelheti vagy csökkentheti az értéket EAX 1.

Ez lehetséges. Ehhez vannak memorizálás INC (növelés) és december (Csökkentés). Opcode INC EAX - 40h, opkódot december EAX - 48h. Ezután fogok nyújtani a szöveget a program, amely kerül eax száma 10, akkor a tartalmát EAX 1-el nő ötször, majd - háromszor csökkentette 1. A golyós könnyen kiszámítható, hogy az eredmény legyen 12. Ez a szám már megjelenik a MessageBox.

Fordítsd le és futtasd a programot láthatjuk, hogy az eredmény 12. A helyesírás helyes és nincs hiba. A szabadidő, lehet kísérletezni PUSH EAX (műveleti kód 50h) és POP EAX (opkódot 58H).

Ez azonban úgy tűnik, hogy egy kicsit. Lehet, hogy nem egy varázslat PUSH EBX vagy INC EDX - és ez elég karnyújtásnyira! Adok egy általános képlet ezeket az utasításokat, amikor operandus regiszter (regiszter nevek helyett memória cella, 32 bites!). Az általános képlet a következő:

Basic + műveleti kód nyilvántartási szám

Alapvető műveleti kódokat:
  • INC - 40h
  • December - 48h
  • PUSH - 50h
  • POP - 58
lajstromszáma:
  • EAX - 0
  • ECX - 1
  • EDX - 2
  • EBX - 3
  • ESP - 4
  • EBP - 5
  • ESI - 6
  • EDI - 7

Ezen képlet könnyű kiszámítani, például műveleti kód PUSH EDX: 48h + 2 = 4Ah. Azt javasoljuk, hogy gyakorlat előkészítése egyszerű varázslatokat alapján a fenti.

Elég gyakorlatban viszont az elméleti kérdéseket. Meddig lehet műveleti kód? Az x86 processzor család lehet hossza 3 bájt. Továbbá, egy részét a műveleti kód byte lehet használni MODR / M, amelyet a későbbiekben a következő fejezetekben.

Igen, az utasítások mérete változhat. És bizonyos processzorok különböző építészeti utasításokat fix hosszúságú. Miért, x86 nem? A legenda szerint, amikor az Intel törpék bányászott érc az elsődleges feldolgozók, még mindig nem tudja, hogyan kell szakítani az ércet az azonos méretű, mint utasította. A tudás és a képesség, hogy ez csak később. De aztán az Intel törpék folytatta, hogy leverjék az ércet a különböző utasításokat, mert tudták, hogyan kell jól csinálni, és ezek a termékek már ismertek, és sokan használják.

Azt is szeretném, hogy fontolja meg, hogy miért volt szükség ahhoz, hogy egy külön mnemonikot xchg EAX, EAX - NOP. Az ok természetesen a metafizikai értelemben vett 90h. Bizonyos értelemben, kilenc (mint háromszorosára triád) szimbolizálja Yin és Yang, és a nulla jelenti az abszolút körében más értékeket. Hozzáadása egy ilyen erős varázsszó a szerelő x86 helyzete erősödött az asztrális síkon.

A következő fejezetben, megpróbáljuk, hogy EAX egységet. Sőt, a kísérlet sikeres lesz. )

[C] Aquila / WASM.RU

Kapcsolódó cikkek