Késleltetés
This presentation is the property of its rightful owner.
Sponsored Links
1 / 55

Nem kombinációs áramkörök PowerPoint PPT Presentation


  • 46 Views
  • Uploaded on
  • Presentation posted in: General

késleltetés. Nem kombinációs áramkörök Óra (clock): ciklusidő (cycle time). Pl.: 500 MHz - 2 nsec. Finomabb felbontás eltolással: 3.21. ábra. A. B. C. 0. 0. 0. 0. 1. 1 0. 0. 0 1. S. S. S. S. #Q. #Q. #Q. #Q. 1. 0. 0 1. 1 0. 0 1. 1. 1 0. 0. Q. Q. Q. Q. R. R.

Download Presentation

Nem kombinációs áramkörök

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Nem kombin ci s ramk r k

késleltetés

Nem kombinációs áramkörök

Óra (clock): ciklusidő (cycle time). Pl.: 500 MHz - 2 nsec. Finomabb felbontás eltolással: 3.21. ábra.

A

B

C

3. előadás


Nem kombin ci s ramk r k

0

0

0

0

1

1 0

0

0 1

S

S

S

S

#Q

#Q

#Q

#Q

1

0

0 1

1 0

0 1

1

1 0

0

Q

Q

Q

Q

R

R

R

R

1 0

0 1

0

1

0

0

0

0

Memória: „Emlékszik” az utolsó beállításra.

Tároló: Szint vezérelt (level triggered).

SR tároló (Set Reset latch), 3.22. ábra. Stabil állapot: a két kimenet 0, 1 vagy 1, 0. S (set), R (reset) bemenet. (#Q ≡ Q)

1 állapot:

0 állapot:

Nem stabil állapotok:

3. előadás


Nem kombin ci s ramk r k

1-be állítás:

0-ról:1-ről:

1

0

0

1

0 1

0

1 0

1

S

S

S

S

#Q

#Q

#Q

#Q

0 1

1

1 0

0

1 0

0 1

0

1

Q

Q

Q

Q

R

R

R

R

1

0 1

1 0

0

1

0

1

0

0-ba állítás:

0-ról:1-ről:

3. előadás


Nem kombin ci s ramk r k

S

#Q

óra

Q

R

D

#Q

Q

Időzített (clocked) SR tároló (3.23. ábra).

Mindkét SR tároló indeterminisztikussá válna, ha S = R = 1 egyszerre fordulna elő.

IdőzítettD-tároló (3.24. ábra).

3. előadás


Nem kombin ci s ramk r k

Δ

d

b ÉS c

c

b

a

D

#Q

Q

b

a

d

c

Pulzusgenerátor 3.25. ábra.

Az inverternek van egy pici (1-10 ns) késleltetése (Δ).

Flip-flop: élvezérelt (edge triggered), D flip-flop: 3.26. ábra.

3. előadás


Nem kombin ci s ramk r k

Q

Q

Q

D

D

D

Q

D

CK

>CK

>CK

CK

3.27. ábra: Tárolók és flip-flopok

(a) (b)

tárolók

(c) (d)

flip-flopok

CK: órajel

(a) CK=1, (b) CK=0 szint esetén írja be D-t,

(c) CK emelkedő, (d) CK lefelé menő élénél.

Sokszor S (set, PR preset), R (reset,CLR clear) be- és Q# kimenet is van.

3. előadás


Nem kombin ci s ramk r k

14 13 12 11 10 9 8

CLR

CLR

D Q

D Q

>CK #Q

>CK #Q

PR

PR

1 2 3 4 5 6 7

Vcc

3.28. ábra: (a) 2 független D flip-flop,

GND

3. előadás


Nem kombin ci s ramk r k

Vcc

20 19 18 17 16 15 14 13 12 11

D Q

D Q

D Q

D Q

>CK

>CK

>CK

>CK

CLR

CLR

CLR

CLR

CLR

CLR

CLR

CLR

>CK

>CK

>CK

>CK

D Q

D Q

D Q

D Q

1 2 3 4 5 6 7 8 9 10

GND

3.28. ábra: (b) közös CK-val vezérelt 8 bites D flip-flop: regiszter

3. előadás


Nem kombin ci s ramk r k

Memória szervezése

Elvárás: szavak címezhetősége.

3.29. ábra: Négy db három bites szó. Bemenetek:

három a vezérléshez,

  • CS (Chip Select): lapka választás,

  • RD (ReaD): 1: olvasás, 0: írás választása,

  • OE (Output Enable): kimenet engedélyezése.

    kettő a címzéshez (dekódoló), három a bemenő adatoknak, három adat kimenet.

3. előadás


Nem kombin ci s ramk r k

2

1

0

D Q

>CK

D Q

>CK

D Q

>CK

dekóder

D Q

>CK

D Q

>CK

D Q

>CK

A0

A1

D Q

>CK

D Q

>CK

D Q

>CK

D Q

>CK

D Q

>CK

D Q

>CK

CS

RD

OE

input

0. szó

1. szó

2. szó

3. szó

210

output

3. előadás


Nem kombin ci s ramk r k

adat be

adat be

adat ki

adat ki

vezérlés

vezérlés

Memória szervezése

Az igazi memóriáknál a bemenet és kimenet közös (kevesebb lábra van szükség): Nem invertáló és invertáló pufferek (tri-state device, 3.30. ábra).

invertáló puffer

nem invertáló puffer

magas

bemenet esetén

alacsony

3. előadás


Nem kombin ci s ramk r k

D0 D1...D7

A0 A1...A18

A0 A1...A10

512K 8 bitesmemória

(4M bit)

4096K 1 bitesmemória

(4M bit)

D

RASCAS

CS WE OE

CS WE OE

Memórialapkák

Előnyös, ha a szavak száma 2 hatvány.

4 Mbit-es memória kétféle szervezése: 3.31. ábra.

19 cím, 8 adat vonal

11 cím, 1 adat vonal

Row Address Strobe Column Address Strobe

3. előadás


Nem kombin ci s ramk r k

Memórialapkák

A jel (bemenet) beállított (asserted) vagy negált.CS beállított: 1, de CS# beállított: 0

  • 512 K bájtos elrendezés: 19 cím, 8 adat vonal.

  • 2048*2048 bites elrendezés: 11 cím, 1 adat vonal: Bit kiválasztás sor- (RAS: Row Address Strobe) és oszlopindex CAS (Column ...) segítségével. Gyakran alkalmazzák nagyobb memóriáknál, bár a két cím megadása lassíthat.

    Nagyobb memóriáknál 1, 4, 8, 16 bites kimeneteket is használnak.

3. előadás


Nem kombin ci s ramk r k

RAM (Random Access Memory)

  • Statikus RAM (SRAM). D flip-flop elemekből épül fel. Amíg áram alatt van, tartja a tartalmát. Elérési idő: néhány nsec (cache-nek jók).

  • Dinamikus RAM (DRAM): minden bit egy tranzisztor és egy kondenzátor: néhány msec-onként frissíteni kell, de nagyobb adatsűrűség érhető el. Elérési idő: néhány tíz nsec (főmemóriák). Szinkron: SDRAM (synchronous DRAM).Aszinkron működésű:-régi: FPM (Fast Page Mode) sor-, oszlopcím.-újabb: EDO (Extended Data Output) lehet új memóriahivatkozás, mielőtt az előző befejeződik.

3. előadás


Nem kombin ci s ramk r k

ROM (Read-Only Memory)

ROM: gyárilag kialakított tartalom.

PROM (Programmable ROM): a tartalom biztosítékok kiégetésével alakul ki (hasonlóan a PLA-khoz, 3.15. ábra).

EPROM (Erasable PROM): a biztosítékok speciális fénnyel kiolvaszthatók és „kijavíthatók”.

EEPROM: elektromos impulzusokkal.

Flash (fény) memória: törlés és újraírás csak blokkonként.Kb. 10 000 használat után „elkopnak”.

3. előadás


Nem kombin ci s ramk r k

Az I8086/8088 utasítás rendszere

Jelőlések

 : értékadás

: felcserélés

op, op1, op2: tetszőlegesen választható operandus (közvetlen, memória vagy regiszter).

op1 és op2 közül az egyik regiszter kell legyen!

reg: általános, bázis vagy index regiszter

mem: memória operandus

ipr: (8 bites) IP relatív cím

port: port cím (8 bites eltolás vagy DX)

[op]: az op által mutatott cím tartalma

3. előadás


Nem kombin ci s ramk r k

Adat mozgató utasítások

Nem módosítják a flag-eket (kivéve POPF és SAHF)

MOVop1, op2; op1  op2 (MOVe)

XCHGop1, op2; op1  op2 (eXCHanGe), op2 sem

; lehet közvetlen operandus

XLAT; AL  [BX+AL] (trans(X)LATe), a

; BX által címzett maximum 256 byte-

; os tartomány AL-edik byte-jának

; tartalma lesz AL új tartalma

LDSreg, mem; reg  mem, mem+1

; DS  mem+2, mem+3 (Load DS)

LESreg, mem; reg  mem, mem+1

; ES  mem+2, mem+3 (Load ES)

LEAreg, mem; reg  mem effektív (logikai) címe

; (Load Effective Address)

3. előadás


Nem kombin ci s ramk r k

A veremmel (stack-kel) kapcsolatos adat mozgató utasítások:

PUSHop; SP  SP-2; (SS:SP)  op

PUSHF; (PUSH Flags)

; SP  SP-2; (SS:SP)  STATUS

POPop; op  (SS:SP); SP  SP+2

POPF; (POP Flags)

; STATUS  (SS:SP); SP  SP+2

Az Intel 8080-nal való kompatibilitást célozza az alábbi két utasítás:

SAHF; STATUS alsó 8 bitje  AH

LAHF; AH  STATUS alsó 8 bitje

3. előadás


Nem kombin ci s ramk r k

Aritmetikai utasítások

ADDop1, op2; op1  op1 + op2 (ADD)

Pl.: előjeles/előjel nélküli számok összeadása

MOVAX, -1; AX=-1 (=0FFFFH)

ADDAX, 2; AX=1, C=1, O=0

ADCop1, op2; op1  op1 + op2 + C

; (ADD with Carry)

Pl.: két szavas összeadás (előjeles/előjel nélkül)

ADDAX, BX

ADCDX, CX; (DX:AX) = (DX:AX) + (CX:BX)

INCop; op  op + 1, C változatlan! (INCrement)

3. előadás


Nem kombin ci s ramk r k

SUBop1, op2; op1  op1 - op2 (SUBtraction)

CMPop1, op2; flag-ek op1 - op2 szerint (CoMPare)

SBBop1, op2; op1  op1 - op2 – C:

; a több szavas kivonást segíti.

DECop; op  op - 1, C változatlan ; (DECrement)

NEGop; op  -op (NEGate)

3. előadás


Nem kombin ci s ramk r k

Az összeadástól és kivonástól eltérően a szorzás és osztás

esetében különbséget kell tennünk, hogy előjeles vagy előjel

nélküli számábrázolást alkalmazunk-e. További lényeges

eltérés, hogy két 8 bites vagy 16 bites mennyiség szorzata

ritkán fér el 8 illetve 16 biten, ezért a szorzás műveletét úgy

alakították ki, hogy 8 bites tényezők szorzata 16, 16 biteseké

pedig 32 biten keletkezzék:

Szorzásnál op nem lehet közvetlen operandus!

MULop; előjel nélküli szorzás (MULtiplicate),

IMULop; előjeles szorzás (Integer MULtiplicate).

Ha op 8 bitesAX  AL  op.

Ha op 16 bites (DX:AX)  AX  op.

3. előadás


Nem kombin ci s ramk r k

Osztásnál op nem lehet közvetlen operandus!

DIVop; (DIVide) előjel nélküli osztás,

IDIVop; (Integer DIVide) előjeles osztás,

; A nem 0 maradék előjele megegyezik

; az osztóéval.

Ha op 8 bites: AL  AX/op hányadosa,

AH  AX/op maradéka.

Ha op 16 bites: AX  (DX:AX)/op hányadosa,

DX  (DX:AX)/op maradéka.

Osztásnál túlcsordulás azonnal elhal (abortál) a programunk!

3. előadás


Nem kombin ci s ramk r k

Ha bájtot bájttal vagy szót szóval akarunk osztani, akkor:

  • Előjel nélküli osztás előkészítése AH illetve DX nullázásával történik.

  • Előjeles osztás előkészítésére szolgál az alábbi két előjel kiterjesztő utasítás:

    CBW; (Convert Byte to Word)

    ; AX  AL előjel helyesen

    CWD; (Convert Word to Double word)

    ; (DX:AX)  AX előjel helyesen

    Pozitív számok esetén (az előjel 0) az előjel kiterjesztés az

    AH illetve a DX regiszter nullázását, negatív számok esetén

    (az előjel 1) csupa 1-es bittel való feltöltését jelenti.

    Az előjel kiterjesztés máskor is alkalmazható.

3. előadás


Nem kombin ci s ramk r k

; Két vektor skalár szorzata. 1. változat

codesegment para public ’code’

assume cs:code, ds:data, ss:stack, es:nothing

skalarprocfar

pushds; visszatérési cím a verembe

xorax,ax; ax  0

pushax; visszatérés offset címe

movax,data; ds a data szegmensre mutasson

mov ds,ax; sajnos „mov ds,data”

; nem megengedett

; A

3. előadás


Nem kombin ci s ramk r k

movcl,n; cl  n, 0  n  255

xorch,ch; cx = n szavasan

xordx,dx; az eredmény ideiglenes helye

JCXZkesz; ugrás a kesz címkére,

; ha CX (=n) = 0

xorbx,bx; bx  0,

; bx-et használjuk indexezéshez

3. előadás


Nem kombin ci s ramk r k

ism:moval,a[bx]; al  a[0], később a[1], ...

imulb[bx]; ax  a[0]b[0], a[1]b[1], ...

adddx,ax; dx  részösszeg

incbx; bx  bx+1, az index növelése

; B

deccx; cx  cx-1, (vissza)számlálás

JCXZkesz; ugrás a kész címkére, ha cx=0

jmpism; ugrás az ism címkére

kesz: movax,dx; a skalár szorzat értéke ax-ben

; C

3. előadás


Nem kombin ci s ramk r k

callhexa; az eredmény kiírása

; hexadecimálisan

movsi,offset kvse ; kocsi vissza soremelés

callkiiro; kiírása

ret; vissza az Op. rendszerhez

skalarendp; a skalár eljárás vége

; D

3. előadás


Nem kombin ci s ramk r k

hexaproc; ax kiírása hexadecimálisan

xchgah,al; ah és al felcserélése

callhexa_b; al (az eredeti ah) kiírása

xchgah,al; ah és al visszacserélése

call hexa_b; al kiírása

ret; visszatérés

hexaendp; a hexa eljárás vége

; ----------------------------------------------------------

hexa_bproc; al kiírása hexadecimálisan

pushcx; mentés a verembe

movcl,4; 4 bit-es rotálás előkészítése

RORal,CL; az első jegy az alsó 4 biten

callh_jegy; az első jegy kiírása

RORal,CL; a második jegy az alsó 4 biten

callh_jegy; a második jegy kiírása

popcx; visszamentés a veremből

ret; visszatérés

hexa_bendp; a hexa_b eljárás vége

3. előadás


Nem kombin ci s ramk r k

h_jegyproc; hexadecimális jegy kiírása

pushax; mentés a verembe

ANDal,0FH; a felső 4 bit 0 lesz,

; a többi változatlan

addal,’0’; + 0 kódja

cmpal,’9’;  9 ?

JLEh_jegy1; ugrás h_jegy1 -hez, ha igen

addal,’A’-’0’-0AH; A-F hexadecimális jegyek

; kialakítása

h_jegy1: movah,14; BIOS szolgáltatás előkészítése

int10H; BIOS hívás: karakter kiírás

popax; visszamentés a veremből

ret; visszatérés

h_jegyendp; a hexa_b eljárás vége

3. előadás


Nem kombin ci s ramk r k

kiiroproc ; szöveg kiírás (DS:SI)-től

pushax

cld

ki1:lodsb ; ala következő karakter

cmpal, 0; al =? 0

jeki2; ugrás a ki2 címkéhez, ha al=0

movah,14; BIOS rutin paraméterezése

int 10H; az AL-ben lévő karaktert

; kiírja a képernyőre

jmpki1; a kiírás folytatása

ki2:popax

ret; visszatérés a hívó programhoz

kiiroendp; a kiíró eljárás vége

; ----------------------------------------------------------

codeends; a code szegmens vége

3. előadás


Nem kombin ci s ramk r k

datasegment para public ’data’

ndb3

adb1, 2, 3

bdb3, 2, 1

kvsedb13, 10, 0; kocsi vissza, soremelés

dataends; a data szegmens vége

; ==========================================

stacksegment para stack ’stack’

dw100 dup (?); 100 word legyen a verem

stackends; a stack szegmens vége

; ==========================================

endskalar; modul vége,

; a program kezdő címe: skalar

3. előadás


Nem kombin ci s ramk r k

Egyszerűsítési lehetőség:

; B

deccx; cx  cx-1, (vissza)számlálás

JCXZkesz; ugrás a kész címkére, ha cx=0

jmpism; ugrás az ism címkére

kesz: movax,dx ; a skalár szorzat értéke ax-ben

helyett:

; B

LOOPism; ugrás az ism címkére,

; ha kell ismételni

kesz: movax,dx ; a skalár szorzat értéke ax-ben

3. előadás


Nem kombin ci s ramk r k

Annak érdekében, hogy a skalárszorzatot kiszámító program ne rontson el regisztereket, kívánatos ezek mentése:

; A

PUSHBX; mentés

PUSHCX

PUSHDX

és visszamentése:

POPDX; visszamentés

POPCX

POPBX

; C

3. előadás


Nem kombin ci s ramk r k

A paraméterek szabványos helyen történő átadása

; Két vektor skalár szorzata. 2. változat

. . .

; A

; ELJÁRÁS HÍVÁS A PARAMÉTEREK

; SZABVÁNYOS HELYEN TÖRTÉNŐ ÁTADÁSÁVAL

CALLSKAL; ELJÁRÁS HÍVÁS

; eredmény az AX regiszterben

; C

callhexa; az eredmény kiírása

movsi,offset kvse ; kocsi vissza, soremelés

callkiiro; kiírása

. . .

ret; vissza az Op. rendszerhez

skalarendp; a skalár eljárás vége

3. előadás


Nem kombin ci s ramk r k

SKALPROC; KÖZELI (NEAR) ELJÁRÁS ; KEZDETE

PUSHBX; MENTÉSEK

PUSHCX

PUSHDX

movcl,n; cl  n, 0  n  255

xorch,ch; cx = n szavasan

xordx,dx; az eredmény ideiglenes helye

jcxzkesz; ugrás a kesz címkére, ha n=0

xorbx,bx; bx  0,

; bx-et használjuk indexezéshez

3. előadás


Nem kombin ci s ramk r k

ism:moval,a[bx]; al  a[0], később a[1], ...

imulb[bx]; ax  a[0]b[0], a[1]b[1],...

adddx,ax; dx  részösszeg

incbx; bx  bx+1, az index növelése

; B

LOOPism; ugrás az ism címkére,

; ha kell ismételni

kesz: movax,dx; a skalár szorzat értéke ax-ben

POPDX; VISSZAMENTÉSEK

POPCX

POPBX

RET; VISSZATÉRÉS A HÍVÓ ; PROGRAMHOZ

SKALENDP; A SKAL ELJÁRÁS VÉGE

; D

Csak az a és b vektor skalár szorzatát tudja kiszámolni!

3. előadás


Nem kombin ci s ramk r k

A paraméterek regiszterekben történő átadása

; Két vektor skalár szorzata. 3. változat

. . .

; A

; ELJÁRÁS HÍVÁS A PARAMÉTEREK

; REGISZTEREKBEN TÖRTÉNŐ ÁTADÁSÁVAL

MOVCL, n; PARAMÉTER BEÁLLÍTÁSOK

XORCH, CH; CX = n, ÉRTÉK

MOVSI,OFFSET a; SI  a OFFSET CÍME

MOVDI,OFFSET b; DI  b OFFSET CÍME

callskal; eljárás hívás

; eredmény az ax regiszterben

callhexa; az eredmény kiírása

movsi,offset kvse ; kocsi vissza, soremelés

callkiiro; kiírása

. . .

ret; visszatérés az Op. rendszerhez

skalarendp; a skalár eljárás vége

3. előadás


Nem kombin ci s ramk r k

skalproc; Közeli (NEAR) eljárás kezdete

pushbx; mentések

pushcx

pushdx

xordx,dx; az eredmény ideiglenes helye

jcxzkesz; ugrás a kesz címkére, ha n=0

xorbx,bx; bx  0,

; bx-et használjuk indexezéshez

3. előadás


Nem kombin ci s ramk r k

ism:moval,[SI+BX]; FÜGGETLEN a-tól

imulBYTE PTR [DI+BX]; FÜGGETLEN b-től

; csak „BYTE PTR”-ből derül ki, hogy 8 bites a szorzás

adddx,ax; dx  részösszeg

incbx; bx  bx+1, az index növelése

loopism; ugrás az ism címkére,

; ha kell ismételni

kesz: movax,dx; a skalár szorzat értéke ax-ben

popdx; visszamentések

popcx

popbx

ret; visszatérés a hívó programhoz

skalendp; a skal eljárás vége

; D

. . .

Így csak kevés paraméter adható át!

3. előadás


Nem kombin ci s ramk r k

; Két vektor skalár szorzata. 4. változat

. . .

; A

; ELJÁRÁS HÍVÁS A PARAMÉTEREK

; VEREMBEN TÖRTÉNŐ ÁTADÁSÁVAL

MOVAL,n; AL-t nem kell menteni, mert

XORAH,AH; AX-ben kapjuk az eredményt

PUSHAX; AX=n a verembe

MOVAX,OFFSET a; AX  a OFFSET címe

PUSHAX; a verembe

MOVAX,OFFSET b; AX  b OFFSET címe

PUSHAX; a verembe

A verembe került:

n értéke, a címe, b címeparaméterek

3. előadás


Nem kombin ci s ramk r k

callskal; eljárás hívás

; eredmény az ax regiszterben

ADDSP,6; paraméterek ürítése a veremből

. . .

ret; visszatérés az Op. rendszerhez

skalarendp; a skalár eljárás vége

callskal

Hatására a verembe került a visszatérési cím

3. előadás


Nem kombin ci s ramk r k

skalproc; Közeli (near) eljárás kezdete

PUSHBP; BP értékét mentenünk kell

MOVBP,SP; BP  SP,

; a stack relatív címzéshez

PUSHSI; mentések

PUSHDI

pushbx

pushcx

pushdx

A verem tartalma:

n értéke, a címe, b címeparaméterek

visszatérési cím,

bp, si, di, bx, cx, dxmentett regiszterek

3. előadás


Nem kombin ci s ramk r k

A verem tartalma:

n értéke, a címe, b címeparaméterek

visszatérési cím,

bp, si, di, bx, cx, dxmentett regiszterek

(SS:SP)dx

+ 2cx

+ 4bx

+ 6di

+ 8si

+10bp - - - - - - - - - - - - - - - - - - - - - (SS:BP)

+12visszatérési cím+ 2

+14b címe+ 4

+16a címe+ 6

+18n értéke+ 8

. . .korábbi mentések. . .

3. előadás


Nem kombin ci s ramk r k

+10bp - - - - - - - - - - - - - - - - - - - - - (SS:BP)

+12visszatérési cím+ 2

+14b címe+ 4

+16a címe+ 6

+18n értéke+ 8

. . .korábbi mentések. . .

MOVSI,6[BP]; SI  az egyik vektor címe

MOVDI,4[BP]; DI  a másik vektor címe

MOVCX,8[BP]; CX  a dimenzió értéke

xordx,dx; az eredmény ideiglenes helye

jcxzkesz; ugrás a kesz címkére, ha n=0

xorbx,bx; bx  0, indexezéshez

3. előadás


Nem kombin ci s ramk r k

ism:moval,[si+bx]; független a-tól

imulbyte ptr [di+bx]; független b-től

; csak „byte ptr”-ből derül ki, hogy 8 bites a szorzás

adddx,ax; dx  részösszeg

incbx; bx  bx+1, az index növelése

loopism; ugrás az ism címkére,

; ha kell ismételni

kesz: movax,dx; a skalár szorzat értéke ax-ben

3. előadás


Nem kombin ci s ramk r k

popdx; visszamentések

popcx

popbx

POPDI

POPSI

POPBP

ret; visszatérés a hívó programhoz

skalendp; a skal eljárás vége

; D

. . .

ADDSP,6; paraméterek ürítése a veremből

helyett más megoldás:

RET6; visszatérés a hívó programhoz

; verem ürítéssel: . . . SP = SP + 6

3. előadás


Nem kombin ci s ramk r k

Lokális adat terület, rekurzív és re-entrant eljárások

Ha egy eljárás működéséhez lokális adat területre,

munkaterületre van szükség, és a működés befejeztével a

munkaterület tartalma fölösleges, akkor a munkaterületet

célszerűen a veremben alakíthatjuk ki. A munkaterület

lefoglalásának ajánlott módja:

. . .proc. . .

PUSHBP; BP értékének mentése

MOVBP,SP; BP  SP,

; a stack relatív címzéshez

SUBSP,n; n a munkaterület byte-jainak száma

. . .; további regiszter mentések

3. előadás


Nem kombin ci s ramk r k

Lokális adat terület (NEAR eljárás esetén)

(SS:SP) lokális adat terület . . .

+ 2 . . .

. . .. . .

. . .– 2

bp - - - - - - - - - - - - - - - - - - - - - (SS:BP)

visszatérési cím+ 2

paraméterek. . .

korábbi mentések. . .

A munkaterület negatív displacement érték mellett stack

relatív címzéssel érhető el. (A veremben átadott

paraméterek ugyancsak stack relatív címzéssel, de pozitív

displacement érték mellett érhetők el.)

3. előadás


Nem kombin ci s ramk r k

A munkaterület felszabadítása visszatéréskor a

. . .; visszamentések

MOVSP,BP; a munkaterület felszabadítása

POPBP; BP értékének visszamentése

ret. . .; visszatérés

utasításokkal történhet.

3. előadás


Nem kombin ci s ramk r k

Rekurzív és re-entrant eljárások

Egy eljárás rekurzív, ha önmagát hívja közvetlenül, vagy más eljárásokon keresztül.

Egy eljárás re-entrant, ha többszöri belépést tesz lehetővé, ami azt jelenti, hogy az eljárás még nem fejeződött be, amikor újra felhívható. A rekurzív eljárással szemben a különbség az, hogy a rekurzív eljárásban „programozott”, hogy mikor történik az eljárás újra hívása, re-entrant eljárás esetén az esetleges újra hívás ideje a véletlentől függ. Ez utóbbi esetben azt, hogy a munkaterületek ne keveredjenek össze, az biztosítja, hogy újabb belépés csak másik processzusból képzelhető el, és minden processzus saját vermet használ.

3. előadás


Nem kombin ci s ramk r k

Rekurzív és re-entrant eljárások

Ha egy eljárásunk készítésekor betartjuk, hogy az eljárás a paramétereit a vermen keresztül kapja, kilépéskor visszaállítja a belépéskori regiszter tartalmakat – az esetleg eredményt tartalmazó regiszterek kivételével –, továbbá a fenti módon kialakított munkaterületet használ, akkor az eljárásunk rekurzív is lehet, és a többszöri belépést is lehetővé teszi (re-entrant).

3. előadás


Nem kombin ci s ramk r k

Feladatok

Milyen bemenetei vannak az ALU-nak?

Milyen nem kombinációs áramköröket ismer?

Kombinációs áramkör-e az ALU?

Hogyan csökkenthető az összeadásnál az átvitelekből származó idő?

Magyarázza el a pulzus generátor működését!

Mi a különbség a tároló és a flip-flop között?

Mi a különbség a SRAM és a DRAM között?

Mi az EPROM?

Mi az EEPROM?

3. előadás


Nem kombin ci s ramk r k

Feladatok

Milyen adat mozgató utasításokat ismer?

Milyen aritmetikai utasításokat ismer?

Mit csinál az IDIV utasítás?

Mit csinál az CWD utasítás?

Miért hibás az

imul [di+bx]

utasítás?

Milyen paraméter átadási módszereket ismer?

3. előadás


Nem kombin ci s ramk r k

Feladatok

Alakítsa át a skalárszorzat kiszámításának négy változatát, hogy előjeles/előjel nélküli bájt/word vektor elemeit összegezze (számítson arra, hogy az eredmény nem fér el egy bájton/word-ön)!

Készítsen eljárást 2 jegyű előjeles/előjel nélküli szám decimálissá konvertálására és kiírására!

Készítsen eljárást előjeles/előjel nélküli word decimálissá konvertálására és kiírására!

3. előadás


Nem kombin ci s ramk r k

Feladatok

Hogy alakíthatunk ki lokális adat területet?

Mi a rekurzív és a re-entrant eljárás?

Készítsen rekurzív eljárást n! kiszámítására!

Készítsen rekurzív eljárást a és b legnagyobb közös osztójának meghatározására (euklideszi algoritmus)!

3. előadás


  • Login