| | |
| Stránka: 1 z 1
| [ Príspevkov: 6 ] | |
Autor | Správa |
---|
Registrovaný: 21.08.07 Prihlásený: 07.10.12 Príspevky: 84 Témy: 32 Bydlisko: Presov | Napísal cerov: 01.04.2010 18:11 | |
|
Cute skole sme dostalo zadanie napisat program assembleru 8080 kde si to mame sami nastudovat mam stym problem lebo dokumentacia k 8080 nie je skoro ziadna.Potreboval by som vysvetlit ako funguje Zero a Carry.Ako sa to pocita ci Zero=1 alebo Carry=1
|
|
Registrovaný: 13.11.07 Prihlásený: 20.08.16 Príspevky: 1702 Témy: 0 | Napísal chrono: 02.04.2010 0:17 | |
|
Dokumentácie k procesorom 8080 je na internete kopec.
Nijako sa to nepočíta, použiješ len nejakú inštrukciu, ktorá s tou hodnotou pracuje (a v obyčajnom 8080 sú to asi len inštrukcie pre skok).
|
|
Registrovaný: 21.08.07 Prihlásený: 07.10.12 Príspevky: 84 Témy: 32 Bydlisko: Presov | Napísal autor témy cerov: 02.04.2010 11:04 | |
|
no na assembler 8080 som toho vela nenasiel.No len kedy ten skok nastane napr. Cpi 10 JZ Cpi 13 JZ do akumalatoru budeme mat cislo 12 tak sa mi nerovna ani z jednim cislom tak skok nenastane?
|
|
Registrovaný: 11.01.09 Prihlásený: 25.04.24 Príspevky: 1385 Témy: 9 Bydlisko: Hrinova | Napísal Fico: 02.04.2010 11:29 | |
|
Tu je inštrukčná sada
Zero flag sa nastaví na nulu, ak je výsledok poslednej operácie nula. Napr:
Kód: mvi a, 10 ; do registra a vloz 10 cpi 10 ; porovnaj register a s desiatkou: a-10 Po tejto operácii 10 - 10 je výsledok nula, teda zero flag sa nastaví na true [vloží sa tam jednotka]. Ak by výsledok nebol nulový, tak zero flag sa nastaví na nulu [false]. Treba si uvedomiť, že po každej inštrukcii sa nastavujú príznakové registre - teda aj zero flag aj cary flag, no nie všetky inštrukcie menia príznakové registre, napríklad push, pop, atď... S príznakom zero flag súvisia inštrukcie skoku jz [skoč, ak je zero flag jedna] a jnz [skoč, ak zero flag nie je jedna]. Cary flag sa nastaví na true, ak sa výsledok poslednej operácie nezmestí do registra. Pre prácu v 8080 assembleri máme k dispozícii osembitové registre, čiže maximálne číslo, ktoré do nich môžme uložiť, je v rozsahu 0-255. Ak je výsledok poslednej operácie menšie alebo väčšie, cary flag sa nasstaví na true, ak je v tomto rozsahu, tak sa cary flag nastaví na false. Napr: Kód: ; ... ; v registri a je ASCII hodnota nejakeho znaku znova:
cpi '0' jc dalej
cpi '9'+1
jc znova ; ak sa dostaneme sem, v registri a je ASCII hodnota čísla, čiže 0-9
dalej: ;....
S príznakom cary flag súvisia inštrukcie skoku jc [skoč, ak je cary flag jedna - ak bol prenos] a jnz [skoč, ak zero flag nie je jedna - ak nebol prenos].
|
|
Registrovaný: 21.08.07 Prihlásený: 07.10.12 Príspevky: 84 Témy: 32 Bydlisko: Presov | Napísal autor témy cerov: 02.04.2010 18:48 | |
|
Diky za vysvetlene.Ten prikaz cpi `9`+1 porovnava reg A z tesne za znakom 9... tesne za znakom 9 sa mysli cisla od 0 do 9?
|
|
Registrovaný: 11.01.09 Prihlásený: 25.04.24 Príspevky: 1385 Témy: 9 Bydlisko: Hrinova | Napísal Fico: 02.04.2010 20:44 | |
|
Ak je znak v registri A menší ako znak '0' a keďže cpi urobí (a-'0'), tak menšie číslo mínus väčšie číslo je záporné číslo, teda prenos. Takže ak má byť číslo nad nejakou hranicou, nesmie nastať prenos (aj keď sa čísla rovnajú, tak dané číslo patrí do tohoto intervalu).
Ak ale potrebujeme porovnanie hornej hranice intervalu, vtedy využívame prenos: Ak je znak v registri A väčší ako znak '9'+1 (to je konkrétne znak ':') a keďže cpi urobí (a- ('9'+1) ), tak väčšie mínus menšie číslo je vždy kladné; prípadne ak sa rovnajú, tak nula; no každopádne prenos nenastal. Takže ak má byť číslo pod nejakou hranicou, musí nastať prenos (maximálne číslo v intervale + 1).
Snáď som to podal dostatočne výstižne.
|
|
| Stránka: 1 z 1
| [ Príspevkov: 6 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| ASM 8080 v Assembler, C, C++, Pascal, Java | 0 | 405 | 25.02.2017 14:50 kemperik | | 8080 spracovanie retazca v Assembler, C, C++, Pascal, Java | 1 | 654 | 07.01.2009 14:52 stopa27 | | Oneskorenie 1s pre 8080 v Assembler, C, C++, Pascal, Java | 3 | 843 | 25.04.2007 17:30 yossarian | | MHB 8080 / PMD 85-2 v Ostatné procesory | 6 | 5876 | 02.08.2006 8:19 Carlos | | Zdravím, potreboval by som pomocť so zadaním z ASM 8080 v Assembler, C, C++, Pascal, Java | 2 | 369 | 06.03.2017 17:48 Miso122 | | ASSEMBLER v Assembler, C, C++, Pascal, Java | 8 | 1723 | 13.03.2007 20:39 My-reC | | Assembler v Assembler, C, C++, Pascal, Java | 0 | 791 | 31.03.2009 20:10 bbeni | | assembler v Assembler, C, C++, Pascal, Java | 1 | 1493 | 10.11.2006 18:14 Marco | | Assembler v Assembler, C, C++, Pascal, Java | 0 | 708 | 01.04.2009 21:02 bbeni | | aky assembler? v Assembler, C, C++, Pascal, Java | 4 | 760 | 21.11.2007 9:49 euthanan | | Assembler 8086 v Assembler, C, C++, Pascal, Java | 2 | 610 | 27.03.2009 20:33 Ivan11114 | | assembler zadanie v Assembler, C, C++, Pascal, Java | 1 | 1011 | 09.03.2010 20:27 ac.milan | | Assembler binary v Assembler, C, C++, Pascal, Java | 23 | 1205 | 18.04.2012 7:17 Fico | | Assembler úloha v Assembler, C, C++, Pascal, Java | 0 | 792 | 02.02.2008 7:37 HT | | Assembler 8086 v Assembler, C, C++, Pascal, Java | 11 | 1288 | 19.05.2010 22:38 JR55 | | assembler zaciatky v Assembler, C, C++, Pascal, Java | 5 | 952 | 03.09.2010 15:14 Fico |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|