A számítógép felépítése:

 A Neuman-elv: a számítógép legyen teljesen elektronikus, általános feladatok megoldására alkalmas, belső programozású. Azaz a programnak az operatív tárban kell lenni.

Funkcionális modell :

a Neuman-féle processzor centrikus számítógép vázlata.

 

 

a Neumann elvű CPU vázlata :

 

  

Adatbeviteli egységek: billlentyűzet, egér, fényceruza, scanner, videó, vonalkód-olvasó, port.

Adatkiviteli egységek: monitor, nyomtató, videó, port.

CPU :

ˇ Vezérlő egység:

bulletUtasításszámláló: a soron következő utasítás címe
bulletstack: LIFO (last in first out) rendszeru tár
bulletutasítás regiszterek: a végrehajtandó utasítás átmeneti tárolója, értelmezoje
bulletutasítás dekóder: a végrehajtandó utasítás muveleti kódjának megfeleloen az egyes részek muködtetése.

ˇ ALU : fixpontos műveletek, lebegőpontos műveletek, logikai műveletek, regiszter-regiszter műveletek, regiszter-tár műveletek. Részei : puffer (regiszter), akkumulátor (regiszter), elektronika.

ˇ memória : (RAM, ROM, PROM, ....) --- Részei : címregiszter, tároló cellák.

bulletRAM : írható, olvasható, tápfeszültség nélkül tartalma törlődik. Lehet dinamikus (kondenzátorokat tartalmaz - állandó frissítést igényel) vagy statikus (tárolókat tartalmaz - nem igényel frissítést).
bulletROM : gyárilag programozott, nem törölhető.
bulletPROM : felhasználó által egyszer programozható ROM.
bulletEPROM : felhasználó által programozható, UV fénnyel törölhető.
bulletEEPROM : felhasználó által programozható, elektronikusan törölhető.

ˇ adat és címsín : Párhuzamosan muködo vezetékek, az egyes egységek között. A címvezetékek száma meghatározza a megcímezheto memória-cellák számát. Az adatvezetékek száma az egyszerre továbbítható adatbiteket határozza meg.

A CPU buszrendszere

 

bulletˇ Adatbusz: Adatok, muveleti kódok szállítására

ˇ Címbusz: Tároló-rekeszek, I/O egységek címei

ˇ Vezérlőbusz: A tároló és I/O egységek vezérlése,
buszkommunikáció vezérlése, megszakítások vezérlése, órajel.

A CPU tartalmazza :

bulletAritmetikai és logikai egységet: Ez egy digitális kombinációs hálózat, mely képes végre hajtani, az alapveto aritmetikai és logikai műveleteket.
bulletÖsszes regisztert: A regiszter egy tár cella (általában 8 vagy 16 bites), amely nem a külso munka tárban, hanem magában a CPU-ban helyezkedik el. Így lényegesebben gyorsabb adathozzáférést biztosít.
bulletUtasításdekódoló egységet: Értelmezi az utasításkódot és. pl.: további operandusok beolvasása.
bulletVezérlő egységet: Vezérli a processzor további muködését. pl.: az ALU utasítása a megfelelo muvelet elvégzésére, az eredmény kiíratása a megfelelo memóriacímre, vagy regiszterbe.

Regiszterkészlet:

Általános regiszterek

AX AKKUMULÁTOR

BX BÁZISREGISZTER (indirekt címzésre használjuk)

CX számláló regiszter (count r.: ciklusokban az iterációk számát határozza meg)

DX adatregiszter (data r. : IO muveleteknél a portok címzésére használható)

Címzési regiszterek

SI Forrás index (source)

DI Cél index (destination)

BP Bázismutató regiszter

flag: (jelzobitek)

of (overflow) lebegopontos túlcsordulás
if (interrupt) megszakítás engedélyezés
tf (trap) lépésenkénti futtatás
sf (sign) negatív eredmény
zf (zero) zéró
af (auxilary carry) segédátvitel (félátvitel)
cf (carry) átvitel
pf (parity) paritás
df (direction) string-muv. iránya

Vezérlo regiszterek

SP veremmutató (stack pointer)

IP Utasításszámláló (instruction pointer, a soron következo utasítás címének biztosítása CS-sel párban)

FLAG Jelzo regiszterek

Szegmens regiszterek

CS kód szegmens (code segment : arra a szegmensre mutat, amelyben a következo utasítás található)

DS adat szegmens (data segment : az adatok tárplására szolgáló szegmens címét tartalmazza)

ES másodlagos adatszegmens (extra)

SS verem szegmens (stack)

A számítógép muködéséhez szükséges egy rend, mely meghatározza a használható adatok, utasítások szerkezetét.

Utasítás szerkezet:

Utasítás = cím + muveleti kód

Cím: az elvégzendo muvelet operandusainak helye a memóriában.

Muveleti kód : az elvégzendo muvelet jelsorozata, mely alapján az utasításdekóder muködteti a CPU-t

4 cimes utasítás

operandus lehet:

bulletˇ memória, vagy memóriaeltolás cím (MB-os címeknél nagyon hosszú lehet)

ˇ regiszter cím

ˇ közvetlen adat

2 címes utasítás

Az eredmény az elso operandus helyén keletkezik, a következo utasítás címe az utasításszámláló regiszterben keletkezik.

1 címes utasítás

Az elso operandus a CPU kitüntetett regisztere az akkumulátor

Muveleti kód:

kód 6bit a muveletet azonosítja

d 1bit regiszterbe v regiszterbol : a muvelet iránya

w 1bit 1 operandus vagy 2 operandus

mod 2 bit 00 az operandus közvetlen adat

01 az eltolási érték 1 bytos

10 az eltolási érték 2 bytos

11 a következo 3 bit regiszter

reg 3 bit ha a mod 11 volt az utasítás erre a regiszterre vonatkozik

r/m 3 bit az indexelt cimzések mely regiszterek között zajlanak és hogyan számítandó a valódi cím

Címzési módok:

ˇ Abszolut: Közvetlen tárcímet adok meg

ˇ Relatív: Adott tárcímhez való eltolást adom meg

ˇ Direkt: A megadott címen operandust találok

ˇ Indirekt: A megadott címen egy újjab címet találok

ˇ Direkt regiszteres címzés: a regiszterben a cím található

ˇ Indirekt regiszteres címzés: a regiszterben adatcím van , ahol a címet találjuk

címmódosítások :

ˇ Bázisregiszteres címzés: Valódi cím = Bázisregiszterben megadott cím + eltolási érték
(a cím helyett csak az eltolási érték az operandus, így jelentősen lerövidül az utasítás)

ˇ Indexregiszteres címzés: Valódi cím +Bázisregiszterben megadott cím + indexregiszterben megadott cím + eltolási érték. (olyan utasításoknál, ahol több egymást követo adatot mozgatunk az indexregiszter automatikusan növekszik)

Konkrét memória cím eloállítása :

intel 8086 20 bites cím eloállítása 16 bites regiszterek segítségével

 

Utasítások lehetnek:

ˇ adatmozgató (regiszterek és-vagy memória között)

aritmetikai (+, -, (*), növelés, csökkentés, komplementálás ...)

ˇ logikai (és, vagy, shift, rotálás ...)

ˇ vezérlésátadó (az IP regisztert módosítja)

ˇ input-output (perifériák muködtetése)

Példa egy utasítás végrehajtására:

1. Műveleti kód beolvasása az utasítás regiszterbe, dekódolás, megfelelő ütemezéssel az operandusok beolvasása.

2. Címképzés, adatok beolvasása.

3. Művelet elvégzése

4. Eredmény kiírása megfelelő regiszterbe vagy memóriába.

5. Következő utasítás címének képzése (az utasítás számláló regiszterbe)

Példa egy assembly algoritmusra, mely Dos rutint is használ.

kod segment  
  assume cs:kod,ds:kod kód és adatszegmens megadása
  org 0100h a következo utasítás relatív kezdocíme
start: mov ah,9 ah regiszterbe 9-et ír
  lea dx,szoveg dx regiszterbe az adatok kezdocímét
  int 21h Dos rutin hívása ah=9 tehát a dx ben lévo címen kezdodo string írása a konzolra a '$' karakterig
  ;    
vege: mov ah,4ch  
  int 21h Dos rutin hívása ah=4c tehát visszatérés a programból
  ;    
szoveg: db 'Hello világ!$' Adatok byte szervezésben.
kod ends    
  end start