| | |
| Stránka: 1 z 1
| [ Príspevkov: 11 ] | |
Autor | Správa |
---|
Registrovaný: 29.07.08 Prihlásený: 26.12.18 Príspevky: 224 Témy: 57 |
cawte... vedeli by ste mi opraviť zdroják?
zadanie: určte počet slov, ktoré obsahuje najviac 3 číslice. Výsledok má byť v bin. sústave
Všetko mi funguje ale keď dám samé medzery tak vypíše 1. Malo by vypísať nulu.
Kód: org 1000
dcx sp ;inicializacia zasobnika (0FFFFh)
lxi h,text1 ;skopiruje text1 do H call putstr ;vypis text1 lxi h,text2 ;skopiruje text2 ho H call putstr ;vypis text2
lxi d,vlozeny ;adresa pre vstup retazca call getline lxi b,vlozeny
mvi d,0 ;pocet malych pismen push psw ;vlozenie nuly do zasobnika, (pocet vyhovujucich slov) jmp char_loop ;skok na char_loop
char: ;nulovanie pocitadiel mvi d,0 ;vynulovanie pocitadla pre pismena mvi e,0
char_loop: ;citanie znakov a pocitanie cislic v slove ldax b ;nacitanie znaku z retazca inx b ;posun v retazci doprava cpi 10 ;porovnanie pre koniec nacitavania, (ASCII 10 = enter) jz koniec_nacitania ;skok na koniec_nacitania ak bol stlaceny enter cpi 32 ;porovnanie pre koniec slova, (ASCII 30 = space) jz pocet_slov ;skok na pocet_slov ak bol stlaceny space cpi '0' ;vacsie alebo rovne ako 0 jc inre cpi '9' + 1 ;mensie alebo rovne ako 9 jnc inre inr d ;zvysenie poctu cislic o 1 inr e jmp char_loop
inre: inr e jmp char_loop
pocet_slov: ;pocitanie vyhovujucich slovň mov a,e cpi 0 jz char_loop mov a,d ;presun hodnoty z registra D do akumulatora cpi 4 ;porovnanie akumulatora a registra E jnc char ;skok na char ak sa nastavi carry pop psw ;vyber zo zasobnika do akumulatora inr a ;zvysenie poctu vyhovujucich slov push psw ;vlozenie z akumulatora do zasobnika jmp char ;skok na char
koniec_nacitania: mov a,e cpi 0 jz vypis mov a,d ;presun hodnoty z registra D do akumulatora cpi 4 ;porovnanie ci slovo obsahuje aspon 2 cislice jnc vypis ;skok na vypis ak sa nastavi carry pop psw ;vyber zo zasobnika do akumulatora inr a ;zvysenie poctu vyhovujucich slov push psw ;vlozenie z akumulatora do zasobnika jmp vypis ;skok na vypis
vypis1: ;vypise na vystup 1 mvi a,'1' ;presun hodnoty 1 do akumulatora call putchar dcr c ;Dekrementacia pocitadla jmp prevod ;skok na prevod
vypis0: ;vypise na vystup 0 mvi a,'0' ;presun hodnoty 0 do akumulatora call putchar dcr c ;Dekrementacia pocitadla jmp prevod ;skok na pr
vypis: ;vypis poctu slov binarne lxi h,text3 ;skopiruje text1 do H call putstr ;vypis text3 mvi c,8 ;presun hdnoty 8 do registra C (nastavenie pocitadla na 8)
prevod: mvi a,0 ;presun hodnoty 0 do akumulatora cmp c ;porovnanie s registrom C jz end ;skok na end ak sa rovnaju pop psw ;vyber zo zasobnika do akumulatora rlc ;rotacia zasobnika dolava push psw ;vlozenie z akumulatora do zasobnika jc vypis1 ;skok na vypis1 ak sa nastavi carry jmp vypis0 ;skok na vypis0 ak sa nenastavi carry
end: ;ukoncenie programu call newline ;novy riadok hlt
include 'examples\8080\include\getline.inc' include 'examples\8080\include\putstr.inc' include 'examples\8080\include\putchar.inc' include 'examples\8080\include\newline.inc' text1: db 'Program urcuje pocet slov obsahujucich najviac 3 cislice.',10,13,0 text2: db 'Zadaj retazec znakov:',10,13,0 text3: db 10,10,13,'Pocet slov v bin tvare: ',0 vlozeny: ds 50
|
|
Registrovaný: 04.12.08 Prihlásený: 16.12.10 Príspevky: 59 Témy: 10 |
No sám som zvedavý, či nám s tým niekto pomôže.
Ono to proste len tu prvú medzeru ráta ako znak, čiže...
____8 ENTER ...vypíše 2 namiesto 1
8 ___ 8____8 ENTER ....vypíše správne 3
_____ENTER .....vypíše 1...a malo by nulu
_________________ Robím, čo možem. Keď nerobím, nemožem. |
|
Registrovaný: 13.11.07 Prihlásený: 20.08.16 Príspevky: 1702 Témy: 0 | Napísal chrono: 02.04.2010 0:15 | |
|
Prečo na začiatku nenastavuješ register E na nulu? (a prečo tam nemáš napísané, že v E je počet znakov toho slova, ale máš tam napísané tak zrejmé veci ako napr to, že obsah registra E presúvaš to registra A)
PS: Aký assembler má tak nechutnú syntax?
|
|
Registrovaný: 04.12.08 Prihlásený: 16.12.10 Príspevky: 59 Témy: 10 |
i8080.
No taže stačí doplniť mov e,0 napr medzi tieto dva riadky
mvi d,0 ;pocet malych pismen
push psw
a už to pôjde. Odskúšané.
_________________ Robím, čo možem. Keď nerobím, nemožem. |
|
Registrovaný: 29.07.08 Prihlásený: 26.12.18 Príspevky: 224 Témy: 57 | Napísal autor témy Shwollo: 02.04.2010 17:45 | |
|
mne to nejde
Kód: . . . mvi d,0 ;pocet malych pismen mov e,0 push psw ;vlozenie nuly do zasobnika, (pocet vyhovujucich slov) . . . Kód: [15;6] Syntax error: ('0')
|
|
Registrovaný: 04.12.08 Prihlásený: 16.12.10 Príspevky: 59 Témy: 10 |
Jaj mvi e, 0 a nie mov e,0
sekol som sa
_________________ Robím, čo možem. Keď nerobím, nemožem. |
|
Registrovaný: 29.07.08 Prihlásený: 26.12.18 Príspevky: 224 Témy: 57 | Napísal autor témy Shwollo: 02.04.2010 19:04 | |
|
super dik. máš u mňa príp. €.
dúfam, že tam už nenájde nič, čo by sa mu nepáčilo.
|
|
Registrovaný: 13.11.07 Prihlásený: 20.08.16 Príspevky: 1702 Témy: 0 | Napísal chrono: 02.04.2010 21:28 | |
|
Keby si mne dal program s tak zbytočnými komentármi, asi by som ťa niekam poslal.
|
|
Registrovaný: 21.04.10 Prihlásený: 19.05.10 Príspevky: 4 Témy: 0 | Napísal JR55: 21.04.2010 14:34 | |
|
stacilo vymazat jmp char_loop hned na zaciatku
|
|
Registrovaný: 04.12.08 Prihlásený: 16.12.10 Príspevky: 59 Témy: 10 |
JR55 píše: stacilo vymazat jmp char_loop hned na zaciatku
More ty musíš byť divný chlapec komentovať 19 dní starý vyriešený topic :-P:D
_________________ Robím, čo možem. Keď nerobím, nemožem. |
|
Registrovaný: 21.04.10 Prihlásený: 19.05.10 Príspevky: 4 Témy: 0 | Napísal JR55: 21.04.2010 17:20 | |
|
dEVIANT píše: More ty musíš byť divný chlapec komentovať 19 dní starý vyriešený topic :-P:D
Ani nie kedze som sa dostal k tomuto foru az teraz. Hodil som tam iba svoj postreh s inym riesenim.
Inak by som skor prijal vysvetlenie pouzitia syntaxe C v asemblery 8080.
a neskor mozno poradenie pri rieseni mojej dalsej ulohy v asemblery 8086 a NASM.
|
|
| Stránka: 1 z 1
| [ Príspevkov: 11 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| Assembler i8080 help v Assembler, C, C++, Pascal, Java | 1 | 297 | 24.03.2013 22:07 walther | | 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 | | Wordpress chyba (pls help) v Redakčné systémy | 0 | 912 | 06.05.2008 22:14 Gerky | | Chyba s USB pls help v Ostatné zariadenia | 5 | 405 | 25.10.2013 17:44 Steve147 | | assembler 8086- prevod z desiatkovej do 16-tkovej...help.. v Assembler, C, C++, Pascal, Java | 0 | 1205 | 18.04.2010 20:15 erik.666 | | pls help v Ovládače | 0 | 735 | 17.10.2008 15:21 ohhoho | | Pls help v Antivíry a antispywary | 0 | 1156 | 05.08.2008 23:12 McDog | | Pls. help v Grafické karty | 3 | 612 | 18.01.2008 8:35 Hiťo | | pls help v Procesory | 0 | 801 | 11.02.2008 19:08 rudpid | | PLS HELP v nVidia čipové sady | 13 | 1063 | 21.12.2007 16:38 Smush | | HELP ME PLS v Antivíry a antispywary | 0 | 577 | 10.12.2007 21:24 PE1987 | | Convert pls help v Video programy | 0 | 570 | 21.08.2011 15:55 Lajk | | DOSKA PLS HELP v Intel čipové sady | 1 | 541 | 22.12.2008 15:34 Rufus59 | | Excel, pls help v Ostatné programy | 6 | 1688 | 29.03.2008 19:35 Intelman | | .daa - pls help v Ostatné programy | 14 | 9274 | 02.11.2007 15:13 hidden |
| 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
|
|