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 | 32 Bydlisko: Presov |
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 | 0 |
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 | 32 Bydlisko: Presov |
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ý: 27.12.24 Príspevky: 1395 Témy: 10 | 10 Bydlisko: Hrinova |
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 | 32 Bydlisko: Presov |
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ý: 27.12.24 Príspevky: 1395 Témy: 10 | 10 Bydlisko: Hrinova |
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 |
---|
| v Assembler, C, C++, Pascal, Java | 0 | 440 | 25.02.2017 14:50 kemperik | | v Assembler, C, C++, Pascal, Java | 1 | 692 | 07.01.2009 14:52 stopa27 | | v Assembler, C, C++, Pascal, Java | 3 | 877 | 25.04.2007 17:30 yossarian | | v Ostatné procesory | 6 | 5944 | 02.08.2006 8:19 Carlos | | v Assembler, C, C++, Pascal, Java | 2 | 398 | 06.03.2017 17:48 Miso122 | | v Assembler, C, C++, Pascal, Java | 0 | 828 | 31.03.2009 20:10 bbeni | | v Assembler, C, C++, Pascal, Java | 1 | 1537 | 10.11.2006 18:14 Marco | | v Assembler, C, C++, Pascal, Java | 0 | 746 | 01.04.2009 21:02 bbeni | | v Assembler, C, C++, Pascal, Java | 8 | 1787 | 13.03.2007 20:39 My-reC | | v Assembler, C, C++, Pascal, Java | 0 | 829 | 02.02.2008 7:37 HT | | v Assembler, C, C++, Pascal, Java | 11 | 1328 | 19.05.2010 22:38 JR55 | | v Assembler, C, C++, Pascal, Java | 5 | 1006 | 03.09.2010 15:14 Fico | | v Assembler, C, C++, Pascal, Java | 3 | 643 | 21.04.2009 20:05 Fico | | v Assembler, C, C++, Pascal, Java | 2 | 937 | 22.10.2007 15:04 programator | | v Assembler, C, C++, Pascal, Java | 1 | 563 | 16.04.2013 22:34 XOLOO | | v Assembler, C, C++, Pascal, Java | 15 | 1182 | 16.12.2011 23:24 Ďuri |
|