| | |
| Stránka: 1 z 1
| [ Príspevok: 1 ] | |
Autor | Správa |
---|
Registrovaný: 20.10.08 Prihlásený: 12.04.13 Príspevky: 29 Témy: 9 | Napísal AM-JP: 12.04.2013 2:23 | |
|
ahojte. mám problém so zadaním programu ktorý má z načítaných slov zistiť počet tých, ktorých súčet ascii kódov v slove je väčší ako 200 (slová sú oddelené medzerou). budem rád každej pomoci, lebo doteraz som programoval iba vo vyšších jazykoch a mám trochu problém myslieť v assembleri, prípadne ma opravte ak som aj nesprávne "uvažoval" pri riešení problémov. prečítal som zopár manuálov o i8080 ale okrem vysvetlenia inštrukcií som sa z nich toho veľa nedozvedel. slová som načítaval zo vstupu a ukladal si vstup po znakoch do akumulátora. program prejde na výpis výsledku pri konci vstupu. fragment kódu : Kód: cyklus: pop PSW ;vyber znaku zo stacku cpi 0 ;zistenie posledneho znaku jz vystup ;ak bol zisteny posledny znak prejdeme na vystup mov C,A ;odpamatanie znaku sui ' ' ;odcinanie od hodnoty znaku v akumulatore hodnotu medzer jnz je_znak ;ak vysledkom nie je nula tak znak nebol medzera a skocime mvi C,0 ;nulujeme registre mvi D,0 mvi H,0 jmp cyklus ;pokracujeme na dalsi znak
je_znak: mov A,C ;nacitanie znaku add D ;pripocitame predchadzajuce hodnoty znakov v slove mov D,A ;zapamatame si vysledok sub E jc cyklus ;ak je vysledok nulovy tak mame sucet prave 200 inr H ;inkrementovanim si nastavime priznak prekrocenia hodnoty 200 mov A,H ;prenesenie do akumulatora cpi 1 ; jnz cyklus ;ak uz bol raz nastaveny priznak v slove (>1) tak neinkrementujeme pocet slov inr B ;inkrementacia poctu vyhovujucichslov jmp cyklus ;pokracujeme na dalsi znak
chybou môjho programu, ktorú som nevedel ako vyriešiť je zistenie "vyhovujúceho" slova. v programe (konkrétne od návestia je_znak) som na to išiel tak, že som hodnotu aktuálneho znaku pripočítal k hodnote predchádzajúcich znakov v slove a potom od tej hodnoty som odčítal 200 (z registra E) za predpokladu ak bol výsledok záporný (nastal carry) tak ešte znaky v slove nemajú súčet viac ako 200. v opačnom prípade máme už vyhovujúce slovo. no problém som mal v tom, ak pri sčítavaní hodnôt znakov som dostal hodnotu väčšiu ako 255. napríklad: slovo "aaa" má hodnotu znakov >200 (291). a tak po pripočítaní 3. znaku som mal v akumulátore hodnotu 36, ktorú si program aj zapamätal a pokračoval v chybnom výpočte. preto sa pýtam. je nejaký iný spôsob akým riešiť to overovanie znakov v slove? alebo ako vyriešiť sčítavanie hodnôt s výsledkom >255 ? ešte raz budem veľmi vďačný za každú pomoc.
|
|
| Stránka: 1 z 1
| [ Príspevok: 1 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| Faktorial - pretečenie v Assembler, C, C++, Pascal, Java | 6 | 1043 | 09.11.2008 15:45 ado21 | | Pretečenie countera v C (Wiring) v Assembler, C, C++, Pascal, Java | 5 | 407 | 15.08.2017 8:01 BX | | ASSEMBLER i8080 POMOC v Assembler, C, C++, Pascal, Java | 3 | 857 | 29.03.2009 13:12 bbeni | | Assembler i8080 delenie v Assembler, C, C++, Pascal, Java | 1 | 436 | 12.04.2010 21:20 dEVIANT | | Assembler i8080 help v Assembler, C, C++, Pascal, Java | 1 | 297 | 24.03.2013 22:07 walther | | assembler i8080 - jedna mala chyba, pls help v Assembler, C, C++, Pascal, Java | 10 | 945 | 21.04.2010 17:20 JR55 | | Asm i8080: vypisat pocet slov s dlzkou 2 az 5 znakov v Assembler, C, C++, Pascal, Java | 26 | 3983 | 15.03.2011 13:47 katiMIR | | M Firefox problém so sťahovaním a GCH problém s updatom v Sieťové a internetové programy | 0 | 1362 | 23.01.2015 16:06 Stary | | Problém so zobrazovaním www stránok, problém užívateľa v Operačné systémy Microsoft | 17 | 2137 | 23.03.2009 10:41 FERDA23 | | Battlefield 3 SKIDROW problem + win7 problem v Počítačové hry | 1 | 1580 | 22.09.2012 23:51 walther | | Záhadný problém s PC... problém procesora? [ Choď na stránku: 1, 2 ] v AMD - Advanced Micro Devices | 45 | 4737 | 26.04.2012 11:14 netpeter77 | | Problém s MB ASUS P5K - problém s Realtek v Ovládače | 4 | 2305 | 14.06.2008 10:36 $ph!nX | | Problém s HDD / Problém s bootovaním v Pevné disky a radiče | 4 | 1465 | 22.02.2013 14:08 lucifer666x | | problem v Assembler, C, C++, Pascal, Java | 4 | 574 | 07.10.2008 20:35 beginner | | Problém v Operačné systémy Microsoft | 1 | 397 | 05.08.2008 12:54 elsofi | | Problem v Počítačové hry | 9 | 925 | 12.09.2009 9:28 Dicktafon |
| 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
|
|