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.