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.
ˇ Vezérlő egység:
| Utasításszámláló: a soron következő utasítás címe | |
| stack: LIFO (last in first out) rendszeru tár | |
| utasítás regiszterek: a végrehajtandó utasítás átmeneti tárolója, értelmezoje | |
| utasí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.
| RAM : í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). | |
| ROM : gyárilag programozott, nem törölhető. | |
| PROM : felhasználó által egyszer programozható ROM. | |
| EPROM : felhasználó által programozható, UV fénnyel törölhető. | |
| EEPROM : 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
| ˇ 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, |
A CPU tartalmazza :
| Aritmetikai é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. | |
| Ö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. | |
| Utasításdekódoló egységet: Értelmezi az utasításkódot és. pl.: további operandusok beolvasása. | |
| Vezé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:
| ˇ 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 | ||