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. reikalavimai | 25% 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
edit1 egzaminas
edit- AL=FC, AH=07, CX=0000. Vykdoma komanda AAD. AX=?
- AL=FB, AF=1, vykdoma komanda DAA. AL=?
- Užrašyti dešimtainį skaičių -43,3 slankaus kablelio formatu aštuoniuose baituose šešioliktaine sistema.
- AX=0003 BX=0000 CX=0001 DX=0000.
FFFA EB A1 JMP nb
Koks bus valdymo perdavimo adresas? - 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=?
- Rasti AA.
- Parašyti mikrokomandą MPL kalba, kuri skaičių -6 nusiunčia į registrą MBR.
- SF=0000. Sudedami dešimtainiai skaičiai -119 ir 122. SF=?
- 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 - SI=E587, DI=fff8, CX=0011, SF=0000. Kokia SI ir DI suma, įvykdžius komandą rep stosb?
2 egzaminas
edit1. 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
edit1. 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
edit1. 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
edit1. 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).