A Mikroprocesszor Harmadik rész
A mikroprocesszor utasításkészlete A processzor egyik fontos jellemzője, hogy hány és milyen típusú gépi utasítás végrehajtására képesek. A processzor számára értelmezhető utasítások összességét nevezzük utasításkészletnek
A gépi utasítás szerkezete Meghatározza a CPU számára, hogy a gépi utasítás mely részét hogyan kell értelmeznie
Általános felépítés : A műveleti rész: az elvégzendő feladatot tartalmazza pl összeadás. Címrész: az adatok helyét határozza meg a tárolóban. Módosító rész: a műveleti rész ill. a címrész értelmezéséhez ad kisegítő információt.
Címzési módszerek: A gépi kódú utasítások abban is különböznek egymástól, hogy az adatokra való hivatkozást milyen formában tartalmazzák. Ezek összefoglaló neve a címzési eljárás. PL: Abszolút címzés Relatív címzés Közvetlen adat címzés Verem címzés Közvetett címzés Indexelt címzés
Abszolút címzés: Az utasítás címrészében, az utasításban résztvevő adatok valódi címét azaz a memóriarekesz sorszámát tartalmazza. A cím vonatkozhat a memóriára, vagy a processzor valamelyik regiszterére PL: MOV AX,DX MOV AX, [004H]
Relatív címzés: Az utasítás címrészében, az utasításban résztvevő adatnak valamilyen alapcímhez vagy báziscímhez viszonyított relatív helyzetét tartalmazza! Ekkor a tényleges fizikai címet a báziscím és a relatív cím összeadásával kapjuk. PL: MOV [BP+4]
Közvetlen adat címzés: (értékadócímzés, álcímzés, literálcímzés) Az utasításban maga az adat található meg amellyel a műveletet kell végrehajtani. PL: MOV AX, 0 ADD AX, 01110011B
Verem címzés: Verem (STACK) vagy egy regisztertár a CPU ban, vagy egy kijelölt memória terület a főtárban. Jellemzője: az utoljára beírt adatot lehet először kiolvasni. LIFO (last in first out)
1.) Memóriaverem Írás (adatbevitel) PUSH Olvasás (adatkihozatal) POP A verem megcímzése egy regiszterrel történik: „veremmutató” SP stack pointer. Kétféle veremművelet van: Írás (adatbevitel) PUSH Olvasás (adatkihozatal) POP
Veremcímzés esetén a veremmutató tartalmát növelni (inkrementálni) kell a beírás után, és csökkenteni (dekrementálni) kell kiolvasás előtt.
2.) Kaszkád verem Itt a verem a CPU-ban van és korlátozott számú regiszterből áll. Ennél nincs szükség SP ra mivel mindig a verem legtetejével dolgozunk
Adatbevitel a kaszkád verembe:
Adatkihozatal a kaszkád veremből:
Mire jó a veremtár? A legtöbb programban vannak olyan gyakran alkalmazott utasítássorozatok, amelyeket többször használunk a program végrehajtása során, de csak egyszer tároljuk a memóriában. Ezeket a programrészek (rutinokat) szubrutinnak nevezzük. Az adott programrészt (pl: gyökvonás) egy CALL utasítással érjük el. (szubrutinhívás). A szubrutin végrehajtása után a főprogramot ott szeretnénk folytatni ahol a CALL utasításkor abbahagytuk. Ehhez a szubrutin hívás előtt a SP aktuális értékét a verembe kell menteni egy PUSH utasítással. A szubrutin végrehajtását követően egy RET utasítás a verem tetejéről kiolvassa a mentett SP címet és folytatja a főprogramot.
Közvetett címzés: (indirekt) Indirekt címzésnél nem az operandus címe található az utasítás címrészében, hanem annak a tároló helynek a címe, ahol az operandus címét megtalálja a processzor.
Indexelt címzés: Adatsorozatokon való műveletvégzés esetén alkalmazandó. Indexelt címzésnél a tényleges címet úgy kapjuk meg, hogy az utasításban levő címhez hozzáadjuk az indexregiszterben található értéket.
Köszönöm a figyelmet!