Intel 8086

Z Multimediaexpo.cz

Intel 8086

Intel 8086 je procesor firmy Intel. Technologie NMOS, 16-bitový, adresovatelný prostor 1 MB. Firma Intel jej navhrla v roce 1978. Byl první z řady procesorů architektury x86. Krátce po jeho uvedení byl uveden na trh také Intel 8088, který měl 8-bitovou vnější sběrnici umožňující spolupráci s levnými čipovými sadami. Byl odvozen od 8080 a 8085 s podobnými registry, jen rozšířenými na 16 bitů.

Obsah

Specifikace

  • Frekvence čipu
    • 5 MHz, 0.33 MIPS.
    • 8 MHz, 0.66 MIPS.
    • 10 MHz, 0.75 MIPS.
  • 29 000 tranzistorů, nanotechnologie: 3 μm.
  • 1 MB adresovatelné paměťi
  • Teoreticky až 10x výkonnější než 8080.

Vnitřní struktura 8086

Registry jsou paměťová místa umístěná v mikroprocesoru. Procesor 8086 má 14 šestnáctibitových registrů.

Všeobecné registry

AH AL střadač
BH BL báze
CH CL čítač
DH DL data

Lze je používat jako dvojice 8-bitových registrů: AH je pro vyšších 8 bitů, AL je pro nižších 8 bitů.

Tyto registry se používají převážně pro aritmetické operace. Speciálně je pro ně určen registr AX (akumulátor), řada instrukcí pracuje převážně jen s tímto registrem. BX se používá především k výpočtu adresy v některých adresových módech. CX je čítač, používá se u instrukcí s opakováním. DX je datový registr a nemá speciální funkci.

Indexové a ukazatelové registry

SP ukazatel zásobníku
BP ukazatel báze
SI index zdrojové adresy
DI index cílové adresy

Tyto registry se nejčastěji používají pro adresaci dat. Indexové registry mají specifikovaný způsob využití. SP (ukazatel zásobníku) obsahuje hodnotu offsetu zásobníku mikroprocesoru a používá se při práci se zásobníkem a voláním podprogramu. BP je určen k adresování dat hlavní paměti. Při spolupráci s vyšším programovacím jazykem je využíván jako ukazatel na parametry volané procedury. SI a DI se využívají při přenosech bloku dat a při přístupu do paměti.

Segmentové registry

CS segmentový registr programu (Code Segment)
DS segmentový registr dat (Data Segment)
SS segmentový registr zásobníku (Stack Segment)
ES pomocný registr (Extra Segment)

CS je nejdůležitější, jelikož obsahuje segmentovou část adresy právě běžícího programu. DS je určen k adresování dat v hlavní paměti, tzn., že pokud instukce pracuje s daty v hlavní paměti, je určen právě tento registr. SS ukazuje na segment strojového zásobníku. SS a SP je přesná adresa strojového zásobníku v hlavní paměti. Je využit u instrukcí, které pracují se zásobníkem. ES je využíván při přesunech dat, jinak je volně k dispozici. IP - tento registr obsahuje offsetovou část adresy právě zpracovávané instrukce.

Příznakový registr – FLAGS

Obsahuje jednobitové indikátory, které určují okamžitý stav mikroprocesoru. Jednotlivé bity tvoří dvě skupiny:

  • TF, IF, DF
  • OF, ZF, SF, AF, PF, CF

Význam jednotlivých bitů:

  • TF (Trap Flag) – Tento příznak se používá pro účely ladění, jeho nastavení způsobí, že procesor po provedení každé instrukce vygeneruje přerušení INT1.
  • IF (Interrupt Flag) – Povoluje externí přerušení.
  • DF (Direction Flag) – Určuje směr zpracování řetězců. Je-li nastaven v jedničce, obsah registrů SI a DI se po provedení řetězcové operace sníží (řetězec se zpracovává odzadu).
  • OF (Overflow Flag) - Příznak se nastaví do jedničky, došlo-li v průběhu provádění instrukce k aritmetickému přeplnění, tzn., že výsledek se nevejde do určeného místa.
  • SF (Sign Flag) – Je-li výsledek operace záporný, příznak se nastaví do jedničky. Je to v podstatě kopie nejvyššího bitu výsledku.
  • ZF (Zero Flag) – Příznak se nastaví, je-li výsledek operace nulový.
  • PF (Parity Flag) – Příznak se nastaví, jestliže dolních 8 bitů výsledku prováděné instrukce má sudý počet jedniček (neznamená, že číslo je sudé).
  • CF (Carry Flag) – Příznak se nastaví, jestlliže při provádění operace došlo k přenosu z nejvyššího bitu. Používá se také při instrukcích posunu a rotace.
  • AF (Auxiliary Flag) – Příznak se používá při BCD v aritmetice a to při přenosu z 3. do 4. bitu.

Vytváření adresy

Šířka adresové sběrnice je 20 bitů (adresuje 1 MB), adresa má dvě části – segment a offset.

Vytvořená adresa se skládá ze dvou šestnáctibitových částí. Z této tzv. logické adresy se fyzická vytváří tak, že se nejprve posune o 4 bity vlevo (odpovídá násobení 16) a k takto vzniklému číslu se přičte offset. Tím vzikne 20bitová adresa, ukazující na konkrétní místo v paměti.

Důsledkem adresování je paměť rozdělena na jednotlivé bloky o velikosti 64 kB (segmenty). Segmentová část adresy po vynásobení šestnácti (připsání čtyř nul na nejnižší bity) ukazuje na začátek segmentu a offset je pozice v segmentu vzhledem k jeho začátku. Segmentové registry udávají segmentovou část adresy.

Externí odkazy