Kompiuterių architektūra VU PARH2114

A. Mitašiūno kompiuterių architektūros konspektas

Kompiuterių architektūra
Sandai 1sKompArchitekturaLT ir PARH2114
Kreditų sk. 5
Vertinimas 60% - Egzaminas
40% - Laboratoriniai
Min. reikalavimai25% iš laboratorinių
Lankomumas Neprivalomas

V. Kiško praktinių užsiėmimių konspektas

Labai patariu atsiskaitymams naudoti emuliatorių: emu8086 4.08 (mokamas, tikriausiai ir nebepalaikomas, bet internete rasti dar galima).


Egzaminų pavyzdžiai edit

1 egzaminas edit

  1. AL=FC, AH=07, CX=0000. Vykdoma komanda AAD. AX=?
  2. AL=FB, AF=1, vykdoma komanda DAA. AL=?
  3. Užrašyti dešimtainį skaičių -43,3 slankaus kablelio formatu aštuoniuose baituose šešioliktaine sistema.
  4. AX=0003 BX=0000 CX=0001 DX=0000.
    FFFA EB A1   JMP nb
    Koks bus valdymo perdavimo adresas?
  5. DS=21FE, SS=5634, CS=3122, ES=41E3, BP=9A32, BX=7536, SI=45FA, DI=22F1, adresavimo baitas 73, po jo seka 90 01. EA=?
  6. Rasti AA.
  7. Parašyti mikrokomandą MPL kalba, kuri skaičių -6 nusiunčia į registrą MBR.
  8. SF=0000. Sudedami dešimtainiai skaičiai -119 ir 122. SF=?
  9. SS=ABCD, SP=FFF2, BP=AF00, CX=0011. Kokia registro SP reikšmė, įvykdžius grįžimą iš tolimos procedūros komandos? (kažkas panašaus)
    CACB 00
  10. SI=E587, DI=fff8, CX=0011, SF=0000. Kokia SI ir DI suma, įvykdžius komandą rep stosb?

2 egzaminas edit

1. Pervesti 19,7 į 16-ainę ir 2-ainę sistemas.
Sprendimas. 19 = 16 + 2 + 1 (Reikia tiesiog užrašyti reikiamą išraišką).
Su trupmena irgi yra lengva:
1,4 => 1 (0,7 padauginame iš 2 ir žiūrime į sveikąją dalį)
0.8 => 0(1,4 padauginame iš 2 ir žiūrime į sveikąją dalį)
1.6 => 1(0.8 padauginame iš 2 ir žiūrime į sveikąją dalį ir t. t.)
1.2 => 1
0.4 => 0
0.8 => 0 (2-tainei sito jau uztenka, bet 16-tainei reikia daugiau)
1.6 => 0
1.2 => 1
0.4 => 0
0.8 => 0
1.6 => 1
1.2 => 1
0.4 => 0
Atsakymas: (10011.1(0110))2, (13.xxx)16
2. Uzrasyti 76 viename baite sesioliktaine sistema:

  • Skaicius be zenklo - 4C
  • Skaicius su zenklu - 4C
  • Simbolinis formatas – 3736 (Kitaip nezinau ar galima, nors taip bus 23 baitai)
  • Desimtainis supakuotas – 0706 (Vel 2 baitai)
  • Desimtainins ispakuotas - ??? (Yra variantai, kad reikia tik paskutini imti, cia tai bus 06)

Manau, jog paskutinis punktas – tam, kad pagaut tuos kurie nezhino, nes siap sitas formatas galioja tik tai skaiciams 0 – 9.
3. Pateikti valdymo perdavimo adreso apskaiciavima:

  • 004C 75 14 90 90 90 jne ABC

Jne opercijos kodas - 75. Sitos komandos operandas – 1 baitas => IP = 004C+14 = 0060

  • 005D E8 FFBC call DEF

Call kodas - E8. Tai bus tiesioginis vidinis adresavimas.=> IP = 005D + BCFD = BD5A
4.Registru reiksmes EEEE. Apskaicuoti EA pagal adresavimo baita:

  • 01 => 00 000 001 (pagal lentele) => EA = BX + DI + offset = EEEE + EEEE + 0 = DDDC
  • 12 => 00 010 010 (pagal lentele) => EA = BP + SI = DDDC

3 egzaminas edit

1. Perversti is desimtaines -19,019 i sesioliktaine.
Pirmiausia 19(dec)=13(hex)
0,019(dec) = 0,0(4DD2F1A9FBE76C8B439581062)
dec = hex
0,019*16=0,304 (imame sveikaja dali 0 = 0)
0,304*16=4,864 (4 = 4)
0,864*16=13,824 (13 = D)
0,824*16=13,184 (13 = D)
0,184*16=2,944 (2 = 2)
0,944*16=15,104 (15 = F)
0,104*16=1,664 (1 = 1)
0,664*16=10,624 (10 = A)
0,624*16=9,984 (9 = 9)
0,984*16=15,744 (15 = F)
0,744*16=11,904 (11 = B)
0,904*16=14,464 (14 = E)
0,464*16=7,424 (7 = 7)
0,424*16=6,784 (6 = 6)
0,784*16=12,544 (12 = C)
0,544*16=8,704 (8 = 8)
0,704*16=11,264 (11 = B)
0,264*16=4,224 (4 = 4)
0,224*16=3,584 (3 = 3)
0,584*16=9,344 (9 = 9)
0,344*16=5,504 (5 = 5)
0,504*16=8,064 (8 = 8)
0,064*16=1,024 (1 = 1)
0,024*16=0,384 (0 = 0)
0,384*16=6,144 (6 = 6)
0,144*16=2,304 (2 = 2)
0,304*16=4,864 (pradeda periodiskai kartotis)

Taigi -19,019(dec) = -13,0(4DD2F1A9FBE76C8B439581062) (hex)

2. Uzrasyti desimtaini -78 skaiciu su zenklu formatu dviejuose baituose sesuoliktaine sistema.
78(dec) = 1001110(bin)
dviejuose baituose tai atrodytu:
0000000001001110
1111111110110001 (invertuojame)
1111111110110010 (+1) tai ir yra -78
Sesioliktaineje tai butu: FFB2

3. Uzrasyti desimtain. -3 slankaus kablelio formatu keturiuose baituose sesioliktaine sistema.

-3 (dec) = -11 * 2^0 = (-1)^1 * 1,1 * 2^1 (1 prie 2 yra eile)
charakteristika = eile + 7F = 1 + 7F = 80

slankus kablelis 4 baituose atrodo taip: zenklui 1 bitas (jei teigiamas - 0, jei neigiamas 1), charakteristika 8 bitai, o like 23 mantise.
Tada -3 slankaus kablelio pavidale yra:
11000000010000000000000000000000. Sesioliktainiu pavidalu tai yra C0400000.
Jei yra pvz. 3,1 tai gaunasi periodine ir tada mantise pildai tol, kol yra vietos.

4. Apskaiciuoti valdymo perdavimo adresa:
71E0 E8D1A2 call number

E8 yra call vidinis tiesioginis, t.y. poslinkis 2 baitai. tada adresas bus perduodamas 71E0+A2D1(sukeista vietomis, nes pirmiau masininiame kode eina jaunesnysi po to vyresnysis)=14B1
man per egza buvo toks:
9854 EBEC90 jmp poslinkis
EB yra jmp vidinis artimas, t.y poslinkis 1 baitas. Tada adresas bus perduodamas: 9856(prie esamo adreso pridedame du,nes IP yra ne einamoji komanda, o kitos skaitomos komandos adresas t.y. 9856)+FFEC(priekyje prirasome FF, nes EC yra neigiamas, ne vyriausiame bite yra vienetas, o poslinkis traktuojamas kaip -128 - 127)=9842

5. Registru reiksmes yra: DS=21FE; SS=5634; CS=31CC; ES=41E3; BP=9A32; BX=7536; SI=45FA; DI=22F1. Apskaiciuoti operando efektyvu adresa pagal adresavimo baita AE. Po adresavimo baito yra 8974.
AE = 10101110 pirmi du bitai 10 yra mod reiksme, 10 reiskia, kad operandas r/m atmintyje ir dvieju baitu poslinkis paskutiniai 3 bitai 110 reiskia, kad yra nurodytas tiesioginis adresas. Taigi EA yra 7489(vietomis sukeiciame del to, kad masininiame kode eina pirmiau jaunesnysis, po to vyresnysis.). Jeigu salygoje r/m butu kitokia reiksme tai butu kitoks variantas pvz. BX + SI + poslinkis tada reiketu sudeti BX ir SI reiksmes ir prideti poslinki(poslinkis gali buti dvieju arba vieno baito).

6. Registru reiksmes yra: DS=21FE; SS=5634; CS=31CC; ES=41E3; BP=9A32; BX=7536; SI=45FA; DI=22F1. Apskaiciuoti operando absoliutu adresa pagal adresavimo baita AE. Po adresavimo baito yra 8974. Absoliutus adresas operandui yra formuojamas pagal sablona DS:<operando EA>(yra kelios isimtys kurias reiketu zinoti). Taigi operando EA turime is praito uzdavinio, tai absoliutus adresas 21FE:8974.

7. Parasyti mikrokomanda, kuri skaiciu 16383 nusiuncia i registra MBR.
Ideja tokia siunciame i kairiji sumatoriu SIGN(1000000000000000)
ir ji invertuojame (0111111111111111(bin)=32767(dec))
ir gauta rezultata pastumiame i desine, t.y div 2 (0011111111111111111(bin) = 16383).
Tai butu
MBR = RIGHT_SHIFT(COM(SIGN) + 0).

Man per egzamina reikejo uzrasyti 34 i MBR, per dvi komandas. Tai atrodytu taip:
X = 15; D = 1 + 1;
MBR = LEFT_SHIFT(X + D);

8. Registra SF=0000. Baitu atminties operacija is dasimtaines reiksmes 88 yra atimta desimtaine reiksme (-44). Pagal rezultata uzdrasyti nauja registro SF reiksme.
Del sito uzdavinio tiksliai nezinau, bet mano manymu formuotu CF(nes yra skolinimasis), PF(rezultato vienetu skaicius lyginis), OF(perpildymas, nes rezultatas netelpa interval -128 - 127), SF (nes vyriausiame bite 1). Cia reiktu tuos skaicius pasiversti i dvejetaine ir atimti, tada sios zymes paaisketu. Taigi SF = 0000100011000101 (bin) = 08C5

9. Registras AL=07, reg. AH=05, reg. BX=AF00, reg. CX=0001. Kokia bus registro AX reiksme sesioliktaineje sistemoje ivykdzius komanda AAD?
Komanda AAD atlieka tokius pertvarkimus:
AL := AH * 10 + AL;
AH := 0;
AL reiksme bus 57(dec)=39(hex)
AH := 0;
Tai AX reiksme bus 0039.

10. Registru SI ir DI reiksmes yra 001A, regist. CX=0002, reg. SF=0C00. Kokio bus registru SI ir DI reiksmiu suma, ivykdzius komanda: rep stosw?
Cia reikia zinoti eilutiniu komandu vykdimo schema ir SF registro sudeti. Is SF nustatome, kad DF = 1. O stosw (raide w rodo, kad bus operuojama su zodziais). Tai vadinasi SI ir DI reiksmes bus mazinamos 2. (is DF=1 ir tai kad operuojama su zodziais). Komanda STOS modifikuoja tik DI registro reiksme.
Pirma karta vykdoma komanda rep stosw (atliekami tokie veiksmai tikrina ar CX = 0(jei lygu baigia pakartojimo kpmanda), jei CX <> 0, tai CX <- CX - 1 (musu atveju CX = CX - 1 = 0001), tada DI = DI - 2 + 0018).
Antra karta vykdoma komanda rep stosw (CX <> 0, tai CX <- CX - 1 (musu atveju CX = CX - 1 = 0000), tada DI = DI - 2 + 0016)
Trecia karta vykdoma komanda rep stosw (CX = 0, baigiama vykdyti pakartojimo komanda) SI reiksme nepakito. Isliko 001A. O DI tapo 0016.
Tada DI+SI=0016+001A=0030. (Reikia atkreipti demesi, kad pakartojimo komandos nutraukiamos ir dar kai Z=ZF, t.y. specifiniai atvejai).

4 egzaminas edit

1. Pervesti desimtaini skaiciu 577,03 i astuntaine pozicine sistema (ATS: 1101,0(17270243656050753412))

2.Uzrasyti desimtaini skaiciu 17 sesioliktaine sistema:

 a.Skaiciu be zenklo formatu 	11
 b.Skaiciu su zenklu formatu	11
 c.Simboliniu formatu		3137
 d.Desimtainiu supakuotu skaiciu formatu  11	
 e.Desimtainiu nesupakuotu skaiciu formatu 01

3.Pateikti valdymo perdavimo adreso apskaiciavima:

 a.E71F E2 FA       loop INIT  	(ATS: E71D)
 b.8EDC E9 12 34    jmp SKIP	(ATS: A113)

4.Registru reiksmes yra:DS=10FE SS=1234 CS=74E3 ES=44FF BP=6611 SI=00F1 DI=31FF.Apskaiciuoti efektyvu adresa pagal adresavimo baita:

 a.  83	(ATS: C9BB)
 b.  3E	(ATS: 31AB)
  ir poslinki :31AB, nurodyta komandoje

5.Registru reiksmas yra: DS=10fe SS=1234 CS=74E3 ES=44FF BP=6611 SI=00F1 DI=31FF.Apskaiciuoti Absoliutu adresa pagal adresavimo baita ir poslinki:31AB, nurodyta komandoje:

 a.  83
 b.  3E

6. Parasyti mikrokomanda, kuri skaiciu 16383 nusiuncia i registra MBR.

7.Baitu atimties operacija is desimtaines reiksmes 97 atimti desimtaine reiksme (-33) ir pagal rezultata suformuoti pozymius.

8.Registas AL=07, registras BX=AF00, registras CX=0002. Kokia bus registro AX reikšmė, įvykdžius komandą AAD?

9. Registrų SI ir DI reikšmės yra 0004, registras CX=0003, registrasSF=0600. kokios bus registrų SI ir DI reikšmės įvykdžius komandą: rep scasw?  (ATS: DI=FFFE, SI=0004)
10. kokie bus atliekami veiksmai vykdant komandą xlat?

5 egzaminas edit

1. Paversti desimtaini skaiciu x (a variantui x = -18,017) i sesioliktaine israiska. (ATS: -12,0(45A1CAC083126E978D4EDE3B6))

2. Paversti skaiciu x (A variantui x = -87) i skaiciaus su zenklu formata dviejuose baituose. Atsakyma pateikti sesioliktainia israiska.

(ATS: FFA9)

3. Paversti skaiciu x (a viarui x = -2, B varinatui x = -3) i slankaus kablelio formata 4 baituose. Atsakyma pateikti sesioliktainia israiska.

(atsakymas a varianto C0 00 00 00 atsakymas B varianto C0 66 66 63 )

4. Skaicia netikslus bet minti galima pagauti:

  duota:
  71C0 87 78 91 call number

(ATS: 033B)

pasakyti kokiu adresu bus perduotas valdymas. Vel atsakymas sesioliktainis.

Autoriaus pastaba: Cia pirmas skaiciu sreiskia dabartini ip. Del to paskutiniai tyrs baitai - komandos kodas, na tu paskutiniai baitai poslinksi kuriuo reikia perduoti valdyma. Tai su dedam 71C3 + 9178 ir gauname nauja reiksme. Jei tai 5 bitai, pirma bita pamirshtame.

5. Duotos beveik visu registru reiksmes (na tu kuriu reikia ir dar daugiau). Pagal adresavimo baita AE nustatyti efektyvu adresa. Jei po baito eina: 80 79 (vel skaiciai netikslus)

(ATS: BP + (80 79))

6. CS=DA34, DS=A3B4,

Duotos beveik visu registru reiksmes (na tu kuriu reikia ir dar daugiau). Pagal adresavimo baita AE nustatyti absoliutu adresa. Jei po baito eina: 80 79 (vel skaiciai netikslus)

salygos 6 ir 5 sutapo, tik tiek kad vienu atveju reikia rasti EA, kitu absoliutu adresa.

7. Parašyti mikrokomanda, kuri skaiciu 16383 nusiuncia i registra MBR.

(abiem variantam tas pats?)

ats: MBR = RIGHT_SHIFT (SIGN + (-1)), arba MBR = RIGHT_SHIFT (COM (SIGN) + 0)

8. Duoti du skaicia 99 ir (-33) desimtainiai. Registro SF = 0000, atleikama operacija cmp, parashyto SF reiskme po to. (cia varianto a skaicia).

Ats: SF = 1, CF = 0, ZF = 0, OF = 1. Deje i registra nemoku to sugrusti. Nezinau kru kas yra.

(ATS: 08 81)


9. Duota daug registru tame tarpe ir AH su AL. Rasti AX reiksme po komandos AAD.

(ATS: al = ah * 10 + al; ah = 0)

kitam variantui lygtais buvo: rasti SF reiksme po komandos DAA.

10. Duota: SI = 000E, DI = 000E, Cx = 0002 SF = 0C00 (cia a varianto reiksmes). Kokia bus SI ir DI suma atlikus: rep stosw.

Atsakymas 000C, DF = 1 (atrodo).

6 egzaminas edit

7 egzaminas edit

8 egzaminas edit