A Mikroprocesszor

Download Report

Transcript A Mikroprocesszor

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
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!