Stránka: 1 z 1
| [ Príspevkov: 27 ] | |
| Autor | Správa |
|---|
Registrovaný: 13.11.09 Prihlásený: 08.09.18 Príspevky: 133 Témy: 21 | 21 Bydlisko: SK |
Vedel by mi niekto vysvetlit ako sa riesia dane ulohy? Dakujem. 1. Aký bude obsah bajtu na offsete 200h v dátovom segmente po vykonaní nasledujúcich inštrukcií?
mov bx, 200h
mov ax, 32ABh
inc ax
mov [bx], ax
2. Je deklarovaná premenná R DB ´abcd´. Čo vypíše nasledujúca postupnosť inštrukcií?
mov di, 1
mov dl, [R+di]
dec di
inc dl
mov ah, 2
int 21h
3. Aké číslo (v desiatkovej sústave) bude v registri AX po vykonaní nasledujúcej postupnosti inštrukcií?
mov ah, 2
mov bh, 3
add ah, bh
add ah, bh
mov al, 2
4. Sú deklarované premenné:
DATA
Data1 DB 0
Data2 DB 2
Data3 DB 4
Čo bude v BX po vykonaní nasledujúcich inštrukcií?
mov al, 2
mov bx, offset Data1
mov [bx], al
5. Predpokladajte, že pamäťové miesta 200h a 201h obsahujú čísla 12h a 34h. (Uvedené adresy chápte ako offset v dátovom segmente.) Čo bude v registri AH po vykonaní nasledujúcich inštrukcií?
mov bx, 200h
mov di, 1
mov ax, 10Ah
add ah, [bx+di]
|
|
Registrovaný: 24.01.08 Prihlásený: 13.09.17 Príspevky: 14571 Témy: 66 | 66 Bydlisko: Žilina |
Vypracovanie otázok na skúšku/domáca úloha?  Mohol by si vyvinúť aspoň nejakú snahu a pýtať sa potom konkrétnu otázku, že čomu vlastne nerozumieš...
_________________ C#, PHP, ... |
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | 3 |
Riešia sa tak, že sa na ten kód pozrieš, vykonáš si ho v hlave, alebo na papier a napíšeš odpoveď. Na to potrebuješ vedieť, čo ktorá inštrukcia robí. Takže ktorú inštrukciu nevieš?
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 13.11.09 Prihlásený: 08.09.18 Príspevky: 133 Témy: 21 | 21 Bydlisko: SK |
To nie je domaca uloha odpovede mam len neviem ako sa k nim dostat. Odpovede su 1. ACh, 2. c, 3. 2050, 4. 0, 5. 35h pismeno h znamena ze to je hexadecimalne cislo
|
|
Registrovaný: 05.04.11 Príspevky: 1693 Témy: 50 | 50 Bydlisko: Žilina, Pop... |
Ale veď je 9. týždeň a tie inštrukcie sa preberajú na tom predmete v nejakom 3. max 4. týždni. A tieto otázky každý rok niekto rieši, pritom každý odpovede má.
_________________ rMBP 13 2015 iPhone 7
|
|
Registrovaný: 13.11.09 Prihlásený: 08.09.18 Príspevky: 133 Témy: 21 | 21 Bydlisko: SK |
K comu su mi odpovede ked neviem postup?
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | 3 |
A prečo si nedával v škole pozor?
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 13.11.09 Prihlásený: 08.09.18 Príspevky: 133 Témy: 21 | 21 Bydlisko: SK |
Lebo to sa musis naucit sam v skole ti nepovedia nic Co robi tento prikaz v 1. ulohe mov [bx], ax?
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | 3 |
A to si myslíš, alebo máte skutočne predmet "toto je assembler x86, koncom semestra z neho bude skúška, dovidenia"? Co to je prosím za školu a predmet?
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 05.04.11 Príspevky: 1693 Témy: 50 | 50 Bydlisko: Žilina, Pop... |
Veď pani Janošíková je postaršia milá pani, ktorá mi vždycky pomohla, ak som mal otázku k veci. A tieto otázky boli už aj v tej dobe celkom ojedinelá záležitosť. Myslím, že ich už dávno zmenila, pretože pochopila, že všetci sa na jej zápočty učia len, z vypracovaných veci naspamäť bez rozmýšľania. Jej knižku za 3 - 4€ predpokladám máš, či ? Ak nie odporúčam kúpiť, je tam všetko na ten predmet + si ju môžeš zobrať na skúšku, kde mne veľmi pomohla.
_________________ rMBP 13 2015 iPhone 7
|
|
Registrovaný: 13.11.09 Prihlásený: 08.09.18 Príspevky: 133 Témy: 21 | 21 Bydlisko: SK |
BX píše: A to si myslíš, alebo máte skutočne predmet "toto je assembler x86, koncom semestra z neho bude skúška, dovidenia"? Co to je prosím za školu a predmet? Da sa tak povedat.To nezalezi od skoly ani predmetu ale od ucitela Myslis tuto http://frdsa.fri.uniza.sk/~janosik/Kniha/ProgJSA.html? Jasne ze su zmenene.
|
|
Registrovaný: 05.04.11 Príspevky: 1693 Témy: 50 | 50 Bydlisko: Žilina, Pop... |
No presne toto myslím, ale ja som za používanie knižiek. Toto na skúške mať otvorené nemôžeš, aspoň myslím.
@BX - tento týpek je druhák na FRI Informatika a si myslí, že bez učenia sa to dá ľavou zadnou.
_________________ rMBP 13 2015 iPhone 7
|
|
Registrovaný: 13.11.09 Prihlásený: 08.09.18 Príspevky: 133 Témy: 21 | 21 Bydlisko: SK |
Mozem to mat otvorene aj na pisomke no vela z toho nevycitas inak by to nedovolila otvorit. Je mozne ze som to podcenil
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | 3 |
Ako x86 nie je úplne triviálna vec (i keď tieto otázky celkom aj hej), ale pýtať sa čo robí inštrukcia mov, to je mi divné. Takže chceš vysvetlenie, ako na to? Napiš do Google "8086 instruction set" a niektorý popis si vyber. Nájdeš tam popis každej inštrukcie. A keď ti aj po tomto nebude niečo jasné, tak kľudne sem napíš znovu.
Samozrejme predpokladám, že máš nejaké základy z fungovania PC. Akože co je to pamäť, byte atď
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 13.11.09 Prihlásený: 08.09.18 Príspevky: 133 Témy: 21 | 21 Bydlisko: SK |
Viem co robi mov len neviem co robi ten zvysok [bx], ax v registri bx mam 200 v registri ax mam po zvyseni o 1 toto 32AC a ako dostanem ACh?
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | 3 |
To je dereferencia adresy. Takže na adresu [bx], ale keďže bx je 200h,tak na adresu 200h sa zapíše hodnota registra ax. Lenže register ax ma 2 byty a adresa adresujte len jeden byte. Čiže na byte na adrese 200h sa musí uložiť dvoj bajtová hodnota, to nesedí. Preto sa z hodnoty odskúsne vyšší byte a zapíše sa nižší (tj. ten vpravo). To je taka zjednodušená verzia 
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 13.11.09 Prihlásený: 08.09.18 Príspevky: 133 Témy: 21 | 21 Bydlisko: SK |
Cize ked mam zlozene zatvorky tak to znamena ze do toho co je v nej mozem ulozit maximalne 1 byte nech tam je cokolvek? Ked napisem [bx] to znamena ze obsahuje 200 a mozem donho ulozit 1 byte a keby som mal len bx tak rovnako obsahuje 200 ale mozem donho ulozit 2 byte? Postup by bol rovnaky aj keby zamenim v ulohe offset aj segment za iny? Ako viem kde konci a kde zacina dalsi byte? Byte sa odstranuje vzdy vyssi a potom nizsi? Keby som mal register eax a ebx namiesto ax a bx tak potom by som musel odstranit 2 byty zlava? Neviem to lebo v prednaskach sa to nenachadza ani asi v jej knihe.
Pri 2. ulohe mov di, 1; ulozim do registra di 1 mov dl, [R+di]; ulozim do dl R co je 4 byty a di 1 cize dokopy 5 lenze do registra dl mozem ulozit len 1 byte tak co s tym? dec di; znizim di o 1 inc dl; zvysim dl o 1 mov ah, 2; ulozim do ah 2 to znamena ze tam chcem ulozit cislo 2 o velkosti 1 byte? int 21h; tento neviem a nakoniec mam dostat c
Pri 3. ulohe mov ah, 2; ulozim do ah 2 o velkosti 1 byte? mov bh, 3; ulozim do bh 3 add ah, bh; pripocitam k 2 cislo 3 co je 5 a to su 2 byty lenze do ah mozem ulozit len 1 tak potom ako? add ah, bh; rovnako ako vyssie mov al, 2; ulozim do al cislo 2 a ma vyjst 2050
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | 3 |
Som to asi moc zjednodušil tým trhanim bytov. Keď je niečo v hranatých zátvorkách, tak je to adresa do pamäte. Ta ja organizovaná po bytoch, čiže vždy adresuješ na jeden byte. Takže ak máš v bx 100(desiatkovo), tak [bx] je adresa stého bytu v pamäti (vlastne sto prvého, adresujte sa od nuly) . No a keď register ax má 2 byty a uložíš ho na adresu 100, tak sa uloží jeho spodná polovica na adresu 100 a horná na adresu 101. Ak máš register ebx, ktorý má 4 byty a uložíš ho na adresu 100, tak sa rozloží na byty 100,101,102,103 od najnižšieho (zprava).
A ešte základy: byte má rozsah 256 čísel, takže typicky 0-255 desiatkovo. V hex sú to dve cifry od 00 do FF. Register eax má štyri byty, jeho nižšia polovica sa vola ax a ma dva byty a ten je rozdelený na al(nižšia polovica) a ah(vyššia polovica), ktoré majú jeden byte. Podobne je to s bx. ax (a podobne aj bx) musíš vždy vidieť ako dva registre vedľa seba: ah|al. Takže keď robíš s ah/al a nakoniec po tebe chcú hodnotu v ax, tak ich zlepíš k sebe a spočítaš tak výslednú hodnotu ax. Ta premenná R "abcd" znamená, že [R] ukazuje na písmeno a, [R+1] na písmeno b atď. Kresli si to na papier a kreslí si aj bity.
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 13.11.09 Prihlásený: 08.09.18 Príspevky: 133 Témy: 21 | 21 Bydlisko: SK |
Pri CX a DX to preco naplati aj tie sa delia na cl,ch a dl,dh? 1 pismeno alebo cislo znamena 1 byte? Pri 2. ulohe mov di, 1; ulozim do registra di 1 mov dl, [R+di]; ulozim do dl b dec di; znizim di o 1 cize v nom bude 0 inc dl; zvysim dl o 1 potom tam bude c? mov ah, 2; ulozim do ah 2 naco ho tam ukladam? int 21h; tento prikaz spravi co?
Pri 3. ulohe mov ah, 2; ulozim do ah 2 o velkosti 1 byte alebo sa tu neda urcit presny pocet bytov? mov bh, 3; ulozim do bh 3 add ah, bh; pripocitam k 2 cislo 3 co je 5 a to su 2 byty alebo 1? add ah, bh; pripocitam k 5 cislo 3 co je 8 mov al, 2; ulozim do al cislo 2 Spocitam a vyjde 82 a nie 2050 preco?
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | 3 |
Šup do Google "8086 registers" a čítaj. Alebo aj obrázky nájdeš k organizácii registrov.
int 21h je výpis na obrazovku. Pre viac informácií, šup do Google "int 21h intruction". Tak sa dozvieš aj to, prečo je pred int 21h vždy niečo s dl a ah. Hľadaj trochu, určite ťa tu teraz nejdem učiť celý semester assembleru. A ak je predmet nejak zlý, sťažujte sa u vedenia, ak máte problémy viacerí.
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 13.11.09 Prihlásený: 08.09.18 Príspevky: 133 Témy: 21 | 21 Bydlisko: SK |
Potreboval by som aspon vediet ako vyriesim tych 5 uloh BX píše: Takže ak máš v bx 100(desiatkovo), tak [bx] je adresa stého bytu v pamäti (vlastne sto prvého, adresujte sa od nuly) . No a keď register ax má 2 byty a uložíš ho na adresu 100, tak sa uloží jeho spodná polovica na adresu 100 a horná na adresu 101. Ak máš register ebx, ktorý má 4 byty a uložíš ho na adresu 100, tak sa rozloží na byty 100,101,102,103 od najnižšieho (zprava). Preco sa pri bx uklada najnizsi na 100 a pri ebx uz nie na 100 ale na 103?
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | 3 |
Aj pri ebx sa v mojom príklade uloží najnižší na adresu 100. Od najnižšieho (zprava) som myslel tak, že zprava v čísle. Takže AABBCCDDh sa uloží ako DD CC BB AA, kde DD je na adrese sto, CC na adrese 101 atď. Tj. tzv. Little Endian, ktorý sa používa v dnešných PC http://sk.m.wikipedia.org/wiki/Endianita
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 13.11.09 Prihlásený: 08.09.18 Príspevky: 133 Témy: 21 | 21 Bydlisko: SK |
Co robim v tychto krokoch zle ze mi vychadzaju zle vysledky? Pri 2. ulohe mov di, 1; ulozim do registra di 1 mov dl, [R+di]; ulozim do dl b dec di; znizim di o 1 cize v nom bude 0 inc dl; zvysim dl o 1 potom tam bude c? mov ah, 2; ulozim do ah 2 naco ho tam ukladam? int 21h; tento prikaz spravi co? Meni vysledok?
Pri 3. ulohe mov ah, 2; ulozim do ah 2 mov bh, 3; ulozim do bh 3 add ah, bh; pripocitam k 2 cislo 3 co je 5 add ah, bh; pripocitam k 5 cislo 3 co je 8 mov al, 2; ulozim do al cislo 2 Spocitam ah+al a vyjde 82 a nie 2050 preco?
Pri 4. ulohe DATA Data1 DB 0 Data2 DB 2 Data3 DB 4 Čo bude v BX po vykonaní nasledujúcich inštrukcií? mov al, 2; ulozim do al 2 mov bx, offset Data1; ulozim do bx 0 mov [bx], al; ulozim do bx 2 a vyjde mi 2 no ma vyjst 0
Pri 5. ulohe mov bx, 200h; ulozim do bx 200 mov di, 1; ulozim do di 1 mov ax, 10Ah; ulozim do ax 10A to rozdelim na ah=1 a al=0A add ah, [bx+di]; pripocitam k 1 cislo 201 cize 202 co je zle a ma vyjst 36
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | 3 |
Citácia: dec di; znizim di o 1 cize v nom bude 0 Čo je to register di? Odkiaľ si vzal, že tam bude nula? Tam niečo nesedí a asi je tam naschvál di, aby to bol chyták  K tomu int 21h som ti napísal, že si to máš nájsť. Hľadal si? Citácia: Spocitam ah+al a vyjde 82 a nie 2050 preco? Potiaľto dobre, ale to "spočítam"... ono to nie je, že spočítam. Ono je to "prilepím k sebe a prevediem z dvojkovej do desiatkovej sústavy". Citácia: mov [bx], al; ulozim do bx 2 a vyjde mi 2 no ma vyjst 0 Tu neukladáš do bx, čo sme sa naučili o hranatých zátvorkách? A na čo sa ťa pýtajú? Citácia: add ah, [bx+di]; pripocitam k 1 cislo 201 cize 202 co je zle a ma vyjst 36 A znovu tie hranaté zátvorky... a pozri sa aj čo sa píše v zadaní.
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 13.11.09 Prihlásený: 08.09.18 Príspevky: 133 Témy: 21 | 21 Bydlisko: SK |
EDI a ESI su indexove registre. 0 som tam dal preto lebo v prvom prikaze som tam ulozil 1 a potom som ho dekrementoval na 0. Int som nasiel ze sluzi na prerusenie procedury ale ja tam nemam proceduru. A tento prikaz dec di tam neviem naco vobec je. Tym spocitanim som myslel prilepim to je aj vidiet z toho co som spravil a nech prevediem 82 do hociktorej sustavy tak 2050 nevyjde. Pytaju sa co bude v bx cize vysledok vidim uz v tomto prikaze mov bx, offset Data1 a do [bx] ukladam na 0. adresu v pamäti cislo 2 A to posledne neviem na 200. adrese v pamäti mam 12 a na 201. adrese mam 34. Ta 200. patri bx a 201. di alebo obidve adresy patria len bx?
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | 3 |
Už ti odpovedal aj pcsiete na hojku, tak nebudem nijak obšírny Citácia: mov di, 1 mov dl, [R+di] dec di inc dl mov ah, 2 int 21h; Poriadne sa pozti na tú postuponosť príkazov a uvedom si, kedy pracuješ s di, kedy s dl a ktorý vlastne potrebuješ. A to int 21h si su už našiel? Nemáš hľadať int, to je interrupt, to ti veľmi nepomôže v tomto prípade. Daj do Googla "int 21h". (Áno, hádaš správne, 21h je tá procedúra) To lepenie k sebe, to máš takto: ah = 8 = 00001000 binárne al = 2 = 00000010 binárne Teraz to zlepím k sebe, takže z toho bude 0000 1000 0000 0010 binárne. A toto číslo preveď do desiatkovej. F1L1P píše: na 200. adrese v pamäti mam 12 a na 201. adrese mam 34. , čiže keď do bx dáš číslo 200h a potom pristúpiš na adresu [bx+di], keď v di je 1, čo tam bude? A to niečo sa pripočíta k ah.
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 13.11.09 Prihlásený: 08.09.18 Príspevky: 133 Témy: 21 | 21 Bydlisko: SK |
Dakujem a co s takym prikladom
Ma tu vyjst 1 Je deklarovana premenna A DB "123"; je rozdiel ked pouzijem "" namiesto '' ? Co vypise nasledujuca postupnost instrukcii? mov dl,A; ulozim do dl 123 inc A; zvysim A na 124 mov ah,2; ulozim do ah 2 int 21h; tento prikaz vypisuje znak z dl na vystup ale ktory z 123?
|
|
Stránka: 1 z 1
| [ Príspevkov: 27 ] | |
|