Gépi kódok és összeszerelési nyelvek programozása - a gépi kódok első lépései - a legtöbb -
Sok amatőr nem tapasztal nehézséget a BASIC elsajátításában. Ehhez elegendő egy kis gyakorlat. De előbb vagy utóbb a "gépi kód" gátjába kerülnek. Szomorú, de néhányan megállnak előtte. Ez egyáltalán nem kapcsolódik a vágy vagy képesség hiányához, csak sokan nem tudják, hol kezdjék el. Ha a BASIC-ban bármit is el tud indulni (ha maga a számítógép kijavítja Önt), akkor itt van a processzor egyenként, és ez a próbamód és hiba nem működik.
Egyszóval létezik olyan pszichológiai akadály, amelyet nehéz egyedül leküzdeni. Ismeretes, hogy ahhoz, hogy megtanuljuk programozni, be kell tartanunk és meg kell kezdeni a programozást. „Inforkom” kínálja a következő kompromisszumos megközelítés - első részeként ebben a fejezetben teszünk „a bikát a szarvánál,” csak kezdje el a programozást, akkor fordítson a többi könyv egy szisztematikus kifejtését az anyag.
Most adjon két közvetlen parancsot egymás után:
Ez a RET (return) parancs. Azt utasítja a processzort, hogy állítsa le a programot a gépkódon ezen a helyen, és térjen vissza oda, ahonnan származik. a mi esetünkben - a BASIC-ban. Ezt tette a processzor, és egy üzenetet kaptál a BASIC "OK" -tól.
Ha minden, amit itt olvashat, érthető az Ön számára, akkor már megértette, hogy a programok gépi kódokban vannak összeállítva. Természetesen vitathatod, hogy egy ilyen program előnyei nem nagyon, de most ez nem a lényeg. Fontos, hogy megértsd, hogy egy bizonyos számsorozat lehet a Z-80 processzor utasításainak sorrendje.
Sajnos, kevés, hogy beszél egy egyszerű számsor, mint például a 0 és a 201 szem előtt tartva a kódokat összes parancs a processzor (és van körülbelül hétszáz) nem könnyű számunkra, de ez egyszerűsíti az a tény, hogy van egy köztes nyelv között a processzor és a férfi - nyelv szerelő. Minden kódnak saját Assembler mnemonikája van. Az Mnemonika olyan betűkészlet, amely az angol szavak rövidítése. Példánkban a Assembler program így néz ki:
Ezen mnemonikák gépi kódokká való átalakítása szintén hozzárendelhető a számítógéphez. Ehhez vannak speciális programok, amelyeket Assemblerek is neveznek. Vannak ellentétes programok is - Szétszedők. Éppen ellenkezőleg, a gépi kódokat a Assembler mnemonikába fordítja.
És ezek a programok és mások sokak. Gyakran össze vannak kötve. A PICTURESQUE által készített HISOFT és EDITAS / MONITOR 16/48 GENS3 / MONS3 csomagok széles körben elosztottak. Itt a GENS 3 és az EDITAS összeszerelők, a MONS 3, a MONITOR 16 és a MONITOR 48 pedig szétszerelők.
Most térjünk vissza az első programunkhoz, és próbáljunk valahogy fejleszteni, hogy valami hasonló legyen. A Z-80 processzor több regiszterrel rendelkezik, amelyek neve - "A", "B", "C" stb. Mindegyikük 0-tól 255-ig terjedő egész számot (azaz egy byte-ot) tartalmazhat.
Több tucat processzorparancs van, amelyek lehetővé teszik a regiszterek tartalmának másolását, valamint a külvilággal való kommunikációt, többek között. és RAM-mal.
Így például az Assembler parancs LD B, A (71 gépi kód) azt jelenti, hogy "az A regiszter tartalmát a B regiszterbe töltjük". Az LD a LOAD (letöltés) rövidítése.
Hasonlóképpen, az LD C, B (gépi kód 72) azt jelenti, hogy "a B regiszter tartalmát a C regiszterbe töltjük". Regisztrálást és egész számokat tölthet be. Például LD A, n - azt jelenti, hogy "n egész számot tölt be az A regiszterbe". ahol n lehet 0-tól 255-ig terjedő szám. Ezt megelőzően az összes parancs egy byte volt. Ugyanaz a parancs - két bájt. Először a gép kódja - 62, majd a szám - n. Így például az LD A, 77 (terhelés a 77-es regiszterben) így fog kinézni: 62.77. Itt a 62 a műveleti kód, azt jelzi a processzornak, hogy mit kell tennie, és 77 az operandus. Itt jegyezd meg, hogy léteznek hárombájtos és négybájtos műveletek. Az első bájt, általában a műveleti kód, és a következő bájt az operandusok. Azt mondjuk "szabályként", mert vannak olyan műveletek, amelyek kódját két bájtban írjuk [1. megjegyzés].
Tehát készen állunk arra, hogy olyan programot írjunk, amely a processzor egy regiszteréből egy másik számot továbbít a másikba.
Így a Assembler LD (30008) parancs, A gép gépi kódjait a következőképpen írja: 50, 56, 117.
Most már mozgathatjuk a memóriacellák tartalmát egyikről a másikra, átmásolva a processzor A regiszterén keresztül.
Bonyolultabbá teheti a feladatot, és megpróbálhatja hozzáadni két memóriakártya tartalmát, és elküldheti az eredményt minden cellába. Például a számtani műveletek végrehajtásához a Z-80 processzor több parancsot is tartalmaz. Vegye figyelembe az ADD A, B parancsot (gépi kódja 128). ADD - hozzáadás.
ADD A, B jelentése: "Add meg a processzor B regiszterének tartalmát az A regiszter tartalmához, és hagyja az eredményt az A regiszterben".
Amint láthatja, ez a parancs egy byte, mert minden jel arra vonatkozóan, hogy hol kell hozzá, és hogy hova küldje el az eredményt, már önmagában is van.
Tegyük fel, hogy meg szeretnénk adni a 30013 és 30014 cellák tartalmát, és fel kell tüntetnünk az eredményt, és a 30015-es cellát. A program a Assemblerben és a gépi kódokban fog kinézni:
Töltse le a regisztrációhoz А regiszter tartalmát
Adja hozzá a B regiszter tartalmát az A. tartalomhoz.
Nincs művelet. Szünet.
Menjen vissza oda, ahonnan ezt a programot hívták.
Próbálja ki ezt a programot a munkahelyén. Adjon hozzá két számot, mondjuk 50 és 70. Először gépeljen hozzá memóriát ehhez a programhoz.
20 FOR i = 30000 TO 30012: READ q: POKE i, q: NEXT i
30. DATA 58, 61, 117, 71, 58, 62, 117, 128, 50, 63, 117, 0, 201
A 30013 és 30014 cellákban írjuk azokat a két számot, amelyeket hozzá kívánunk adni:
40 POKE 30013, 50: POKE 30014, 70
Bemutatunk egy parancsot, hogy programunkat gépi kódokba fussuk.
50 RANDOMIZE USR 30000
És végül elkezdjük a BASIC programunkat - RUN.
Egy másodperc múlva ez meg fog működni, és a képernyőn megjelenik az üzenet OK.
Úgy tűnik, hogy semmi sem változott, de ha ellenõrizi, hogy mi van a 30015-es cellában, gyõzõdjön meg róla, hogy a kiegészítés eredménye van. 120-as szám.
A PEEK 30015 NYOMTATÁSA: 120 OK
Tehát már ismerjük a Z-80 processzor több parancsát. Most meg kell szakítanunk egy ilyen népszerű bemutatót, mivel a processzor parancsrendszere meglehetősen kiterjedt, és ehhez a megközelítéshez hozzávetőleg ezer oldalra kell kerülnie. Reméljük, hogy már elérték a pszichológiai akadályt, majd folytatjuk a processzor parancsrendszer rendszeres és fokozatos fejlesztését.
Ön nyilvánvalóan megértette, hogy a gépi kódok minden parancsához tartozik az Assembler saját mnemonikája, amelyben a művelet lényegét több betű kódolja. Sajnos, a szakirodalom általában írta szakemberek a szakemberek, és nem zavarja, hogy át mnemonikok az orosz nyelv, különösen azért, mert a Z-80 könyvet orosz szinte nincs (több megyei átvitel). Ezért „Inforkom” az ő „Guide ...” (3. rész) adta a hely egy szótár lefordítani memorizálás assembly normál angol, és rajta keresztül, és az orosz nyelvet.
E fejezet végén néhány általános megjegyzés. A különböző processzorok különböző parancsrendszert használnak. A tudás a rendszer parancsértelmezőjének Z-80 nem jelenti azt, hogy képes lesz megérteni a gépi kód más számítógépek, gyűjtött egyéb processzorok, de az biztos, hogy fejlődésük elviszi tízszer gyorsabb.
Még a Z-80 processzornak is, az emlékek még nem egységesítettek. Sok összeszerelő program, például az EDITAS. ZEUS. A GENS 1 ... GENS 3 és mások eltérést mutatnak az emléktárgyak rögzítésében, de ezek jelentéktelenek, és mindig a kísérő utasításban vannak meghatározva a programhoz.
A gépi kódok első lépései - A nagyon - az első lépés.
A gépi kódok első lépései - Miért kell programozási programot tanulni a gépi kódokban?
A gépi kódok első lépései a Z-80 processzor architektúrája.
A számok ábrázolásának formái a Z-80 processzorban - Numerikus rendszerek. Bináris kiegészítő rekord formája. Decimális számtani értelemben.
Számtani és logikai parancsok - Addíciós parancsok. Kivonási parancsok. Összehasonlító parancsok. Logikai parancsok.
Elágazási műveletek - Ugrás parancsok. Műveletek egy ciklusban. Stack parancsok. Subroutines hívás.
Parancsok a ROM eléréséhez - Startup pontok a ROM-ban. A beépített számológép leírása.
Parancsok a bitekkel való munkához - Parancsok a bitek eltolásához, forgatásához és ellenőrzéséhez.
Memória - Memóriablokk feldolgozási utasításai.
I / O - Parancsok a külső eszközökkel való munkavégzéshez.
Megszakítások - a Z80 processzor megszakító rendszerének leírása.
Egyéb parancsok - a Z80 processzor specifikus parancsainak leírása.
Következtetés - a könyv első részének vége és megjegyzései.
II. Rész - "A gépi kódok programozásával foglalkozó workshop". Bevezetés.
A Z80 processzor jellemzői - az első rész anyagának rövid reprodukálása több oldala, a processzor főbb jellemzőinek áttekintése.
A processzorvezérlő rendszer bővítése aritmetikai konstrukció.
A processzor parancsrendszerének bővítése - logikai konstrukciók.
A parancsfeldolgozó rendszer bővítése - az adatátvitel kialakítása.
A processzor parancsrendszerének bővítése - elágazó struktúrák.
A processzor parancsrendszerének bővítése - az alprogramhívás tervezése és visszatérése. Egyéb építmények.
Programok elemzése gépi kódokban - kimenet a színes csíkok szegélyéhez.
Programok elemzése gépi kódokban - adatok küldése a képernyőre a gépi kódtól.
Programok elemzése a gépi kódokban - a program kezelése a Kempston joystickból.
Programok elemzése gépi kódokban - a program vezérlése a billentyűzetről.
Programok elemzése gépi kódokban - a számítógép RAM-jának ellenőrzése.
A gépi kódok programjának elemzése gyakorlati módja a számológép használatának.
A gépkódok programjainak elemzése egy példa a második típusú megszakítások használatára.
A csatornák és a patakok standard csatornák. Más csatornák. Információcsatorna a csatornákról. Csatlakozó szálak. Gyakorlati módszerek a csatornákkal és áramlásokkal való együttműködésre.
2. kiegészítés - a tipikus hibák áttekintése, amelyek a gépi kódok programozásakor jelentkeznek.
III. Rész - útmutató a gépi kódok programozásához. Bevezetés.
Parancsrendszer - a kódértékek összefoglaló táblázata 0-tól 255-ig a Basic és Assembler számára.
A parancsrendszer az Assembler kódértékének táblázata.
3. táblázat - beépített számológép parancsrendszer.
Dictionary assembler mnemonika - a Z-80 processzor gépi kódjának összes betűrendes betűrendben történő emlékeztetése.
5. táblázat - megszakítási mutató táblázat ROM-ból.
Oroszítás - Ruszifikálás UDG szimbólumokkal.
Oroszítás - Oroszítás a generátor cseréjével. Russifikáció "a nyomtató alatt" és "az írógép alatt".
Hasznos tippek - néhány gyakorlati javaslat a számítógép számítógépesítéséhez.
Következtetés - köszönjük figyelmét a könyvünkre. Ha elolvastad a végét, és mindent, ami benne világos, akkor nagy előrelépést tett, de ez még csak az első lépés.