Procesor Intel 8086 a 8088

Procesor 8088

Typy dat zpracovávané procesory

Adresace paměti procesor 8086

Příznakový registr

Zásobník

Přerušení v 8086

Vektor adres rutin obsluhující přerušení

Rezervovaná přerušení 8086

INT nVýznam
0Celočíselné dělení nulou (Divide by Zero)
1Krokovací režim (Single-step)
2Nemaskovatelná přerušení (NMI)
3Ladící bod (Breakpoint trap)
4Přeplnění (Overflow Trap)

Krokovací režim (TF=1)

MOV AX, 0x0100 ;nastavení TF=1
PUSH AX
MOX AX, segmentová část adresy 1. instrukce
PUSH AX
MOV AX, 0 ;offsetová část adresy 1.instrukce
PUSH AX
IRET ;obnoví se TF=1

Počáteční nastavení procesoru

RegistrObsah
Příznakový registr0 (často bývá 2. bit 1, ale nemá význam)
IP0
DS, ES, SS0
CS0FFFFh

Adresovací techniky

(MOV nikdy nepovolí z paměti do paměti) Operandy:

Segment = přímá adresa + báze + index

Instrukce MOV

Aritmetické instrukce

Rozšíření s respektováním znaménka

Celočíselné

Logické instrukce

Rotace, posuvy

Větvení programu

JMP rel8	JMP SHORT navesti	krátký skok
JMP rel16	JMP návěští		blízský skok
JMP ptr16:16	JMP FAR_PTR návěští	vzdálený skok
JMP r/m16	JMP [BX]		nepřímý blízký skok
JMP m16:16	JMP [dvojslovo]		nepřímý vzdálený skok

Podmíněné skoky

JE	EQUAL		ZF=1	roven
JZ	ZERO		ZF=1	nulový
JNE	NOT EQUAL	ZF=0	různý
JNZ	NOT ZERO	ZF=0	nenulový
JP	PARITY		PF=1	sudá parita
JPE	PARITY EVEN	PF=1	sudá parita
JNP 	NOT PARITY	PF=0	lichá parita
JPO	PARITY ODD	PF=0	lichá parita
JS	SIGNUM		SF=1	záporný
JNS	NOT SIGNUM 	SF=0	kladný nebo nenulový
JC	CARRY		CF=1	nastal přenos
JNC	NOT CARRY	CF=0	nenastal přenos
JO	OVERFLOW	OF=1	nastalo přeteční
JNO 	NOT OVERFLOW 	OF=0	nenastalo přeteční
...
ABOVE/BELOW - pro neznaménková
GREATER/LESS - pro znaménková

Zásobník

Volání a návrat z podprogramu

RET		POP IP	blízký návrat
RETF		POP IP	vzdálený návrat
		POP CS	vzdálený návrat
RET imm16	POP IP
		SP:=SP+imm16
RETF imm16	POP IP
		POP CS
		SP:=SP+imm16

Příznakový registr

Přerušení

Cykly

	MOV CX, pocet_pruchodu
	OPAKUJ:
	...
	LOOP OPAKUJ	; DEC CX
			; pokud CX != 0 SHORT skok na OPAKUJ

Ovládání V/V zařízení

Další instrukce přenosů dat

Řídící instrukce

Řetězcové instrukce

Procesor Intel 80286

80286 pin diagram

Režimy

Reálný režim

Chráněný režim

Příznakový registr

Registr MSW (Machine Status Word)

Machine Status Word Register

Adresace paměti v chráněném režimu

Segment selector

https://nixhacker.com/content/images/2020/02/segment-selector1.PNG

Tabulky popisovačů segmentů

40035a.gif

Transformace virtuální adresy

Popisovač segmentu

Typ popisovaného segmentu je definován obsahem slabiky přístupová práva. Podle typu segmentu rozlišujeme v 80286 tyto 4 základní třídy popisovačů:

  1. popisovač segmenty obsahujícího data (datový segment),
  2. popisovač segmentu obsahujícího instrukce (instrukční segment),
  3. popisovač segmentu obsahujícího informace pro systém (systémový segment),
  4. popisovač brány. (Virtuální)

Popisovač datového segmentu

Popisovač instrukčního segmentu

Popisovač systémového segmentu

Smí být umístěn pouze v GDT.

Segmentové registry

Registry GDTR a LDTR

Mikroprocesory II. Literatura Přehled mikroprocesorů Intel
Plnění:
GDTR: LGDT operand obsahující bázi (24b) a limit (16b)
LDTR: LLDT selektor (16b) (nesmí se použít v reálném režimu)

Naplnění instrukčního segmentu

Úroveň oprávnění

  1. jádro operačního systému (řízení procesoru, V/V operací)
  2. služby poskytované OS (plánování procesů, organizace V/V, přidělování prostředků0
  3. systémové programy a podprogramy z knihoven (systém obsluhy souborů, správa knihoven)
  4. uživatelské aplikace

DPL

CPL Current Privilege Level

RPL Requested Privelege Level

EPL

Brány pro předání řízení

Privilegované instrukce

LGDT
LIDT	naplnění datiblu pro přerušení
LLDT
LTR	plnění tabulky při přerušení
LMSW	plnění registru MSW
CLTS	nulování TS bitu v MSW
HLT

POPF a IRET smí měnit zásobník pouze pro CPL = 0

Segment stavu procesu (TSS) Task State switch

40105a.gif

Přerušení

Přerušení generovaná procesorem

Rezervovaná přerušení

Zapnutí chráněného režimu

  1. do paměti zavést programy a odpovídající tabulky popisovačů,
  2. nastavit GDTR a IDTR,
  3. zapnout chráněný režim nastavením bitu PE:=1 registru MSW,
  4. provést blízký skok JMP proto, aby se zrušil obsah interních front procesoru, ve kterých jsou uloženy předvybrané instrukce (výběr instrukcí totiž závisí na zvoleném režimu procesoru),
  5. vytvořit TSS inicializačního procesu a nastavit obsah TR,
  6. naplnit LDTR,
  7. inicializovat ukazatel vrcholu zásobníku SS:SP,
  8. všechny segmenty v paměti označit P:=0,
  9. nastavit příznakový registr F a registr stavu procesoru MSW,
  10. inicializovat externí zařízení,
  11. zabezpečit obsluhu všech možných přerušení,
  12. povolit přerušení (IF:=1),
  13. zahájit provádění prvního programu

Procesor Intel 80386 - i386

Registry

EFlags

Popis signálů a registry

Adresace

Řídicí registry 80386

Popisovače segmentů

Popisovač datového segmentu

Popisovač instrukčního segmentu

Explicitní určení velikosti zajišťují prefixy: 66h mění implicitní velikost operandu a 67h mění implicitní velikost adresy

Popisovač systémového segmentu

Stránkování

Stránkování

Položka stránkové tabulky a adresáře

TLB - Translation Look-aside Buffer

Vyprázdnění TLB

Mapa přístupných V/V bran

Mapa bran

Rezervovaná přerušení

INT 1 - ladění INT 14 - Výpadek stránky (Page Fault) - nemáme oprávnění na přístup