| | |
| Stránka: 1 z 1
| [ Príspevkov: 2 ] | |
Autor | Správa |
---|
Registrovaný: 15.03.10 Prihlásený: 18.04.10 Príspevky: 3 Témy: 3 |
Ahojte potrebujem pomôcť .
potrebuje aby vystup bol desiatkovo.
ak niekto vie pls pomôžte potrebujem surne
Kód: org 1000
start: dcx sp ; inicializacia zasobnika (0FFFFh) lxi h,text1 ; do HL adresa textu text1-uvodny call print ; vypis text1 st1: lxi h,txt2 ; do HL adresa textu txt2-Vloz text... call print ; vypis txt2 lxi d,text ; nacita adresu navestia text do DE - buffer call getline ; nacita riadok z klavesnice na adresu DE call tstline ; test vstupu, ci bol vobec zadany mov a,b ; do A uloz B pocet znakov bez SPACE cpi 0 ; Nula zadaych znakov? jnz pokr ; nie, mozem pokracovat v programe lxi h,chyba ; ano, zle zadany vstup call print ; vypise CHYBU na obrazovku jmp st1 ; opakuj nacitavanie
pokr: call osem ; volaj podprogram osem lxi h,text4 ; do HL adresa textu4-Pocet osmickovych... call print ; vypise text4 na obrazovku call vypis ; volaj vypis / vstup je v reg.B-pocet end: hlt ; zastavi CPU
tstline: lxi d,text ; do DE adresa buffra mvi b,0 ; nuluj pocitadlo B cykl2: ldax d ; do A uloz ASCII kod znaku cpi 32 ; SPACE? jz preskoc ; ano, preskoc cpi 10 ; LF? jz konci ; ano, koniec cpi 13 ; CR? jz konci ; ano, koniec inr b ; zvys B+1, bol to znak
preskoc: inx d ; zvys DE+1, dalsi znak jmp cykl2 ; opakuj testovanie, kym nie je LF+CR konci: ret ; navrat
vypis: mov a,b adi '0' ; hodnota a jej ASCII tvar ... call putchar call newline hlt osem: lxi d,text ; uloz do DE adresu nacitaneho textu mvi b,0 ; vynuluj pocitadlo B, pocet osmickovych cisiel mvi c,0 ; vynuluj pocitadlo pozicie znaku C citam: ldax d ; do A uloz ASCII kod znaku z adresy v DE inr c ; zvys pocitadlo pozicie znaku cpi 10 ; LF? jz koniec ; ano, koniec nacitaneho riadku cpi 13 ; CR? jz koniec ; ano, koniec nacitaneho riadku cpi 38h ; >7 ? jnc dalsi ; ano, dalsi znak cpi 20h ; MEDZERA ? jz space ; ano, skok na podmienky medzery ; ak nie, pokracuj navestim nula: nula: cpi 30h ; porovnaj, ci je znakom nula jnz dalsi ; ak nie je, skoc na dalsi znak mov a,c ; ak je nula, porovnaj s poziciou cpi 1 ; ci je na prvej jnz dalsi ; ak nie j prva nula, skoc na dalsi znak opakuj: inx d ; zvys DE+1 - dalsi znak inr c ; zvys poziciu znaku ldax d ; do A uloz ASCII kod znaku cpi 38h ; >7 ? (v ASCII kode) jnc dalsi ; ano, dalsi znak, ak nie, pokracuj testovanim cpi 58h ; je dalsim znakom X? (hex cislo v ASCII vstupe) jz dalsi ; ak je, skoc na nacitanie dalsieho znaku cpi 'x' ; je dalsim znakom x? (hex cislo v ASCII vstupe) jz dalsi ; ak je, skoc na nacitanie dalsieho znaku cpi 10 ; LF? jz pocet1 ; skok na pocet, B+1 cpi 13 ; CR ? jz pocet1 ; skok na pocet, B+1 cpi 30h ; dalsia 0? jz dalsi ; Ano, je to potom binary cislo, skoc na dalsi cpi 20h ; SPACE ? jz pocet ; ano, skok na pocet, B+1 jmp opakuj ; ak nie, cyklus opakuj kym nie je medzera pocet: inr b ; predpoklad osmickoveho cisla, b+1 jmp space ; skok na nacitanie dalsieho znaku po SPACE pocet1: inr b ; predpoklad osmickoveho cisla, b+1 jmp koniec ; skok na koniec dalsi: inx d ; zvys DE jmp citam ; skok na nacitanie znaku z HL space: mvi c,0 ; ak bola znakom medzera, nuluj jmp dalsi ; citaj dalsi znak koniec: ret
print: mov a, m ; nacitanie znaku z pamate inx h ; posunutie ukazovatela cpi 0 ; je znak 0 ? rz ; ak ano, navrat z podprogramu out 11h ; inak vypis znaku jmp print ; a opakovanie cinnosti text1: db 'Pocet osmickovych cislic vo vstupe.',10,13,0 text: ds 255 ; tu sa ulozi nacitany text (buffer) txt2: db 'Vloz text (max.255 znakov vratane medzier): ',10,13,0 text4: db 10,13,'Pocet osmickovych cisel je: ',0 text5: db 10,13,'Bolo zadanych prave 255 znakov! ',10,13,0 ; chybova hlaska1 chyba: db 10,13,'Bol zadany prazdny vstup alebo len medzery! ',10,13,0 ; chybova hlaska2
include 'examples\8080\include\getline.inc' include 'examples\8080\include\putstr.inc' include 'examples\8080\include\putchar.inc' include 'examples\8080\include\getchar.inc' include 'examples\8080\include\newline.inc'
|
|
Registrovaný: 11.01.09 Prihlásený: 20.04.24 Príspevky: 1385 Témy: 9 Bydlisko: Hrinova | Napísal Fico: 20.03.2010 20:42 | |
|
1.) Výstup desiatkovo je, takže buď nevieš, čo je desiatková sústava, alebo nevieš, že ten, kto ti zadanie spravil, predpokladá prvú cifru 0 (napr 0236, 012, ...)
2.) Silne pochybujem, že toto zadanie dokážeš obhájiť. Ak o tom začínaš pochybovať aj ty, dal som ti ľahšie riešenie --> http://www.pcforum.sk/asm-pocet-slov-reprezentujucich-zapis-osmickoveho-cisla-vt87586.html
|
|
| Stránka: 1 z 1
| [ Príspevkov: 2 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| Plis,asembler help:(surne v Assembler, C, C++, Pascal, Java | 2 | 906 | 25.08.2007 15:01 cinges | | vystup na sluchadla Výstup pro sluchátka (1xS/PDIF) v Notebooky a netbooky | 1 | 585 | 29.06.2011 19:20 rhonin37 | | ext USB zvukovka 5.1 vystup a SPDIF vstup/vystup v Zvuk | 5 | 1478 | 20.01.2010 15:39 kolacek | | Asembler prevod v Assembler, C, C++, Pascal, Java | 4 | 2126 | 21.04.2010 9:45 dadesk8 | | Asembler zrychlenie vykonavania cyklu v Assembler, C, C++, Pascal, Java | 6 | 443 | 05.03.2013 19:25 n0sf3ratus | | Pascal,Asembler a Win XP v Assembler, C, C++, Pascal, Java | 1 | 1565 | 14.11.2005 22:01 JanoF | | [Asembler] pocet malych a velkych pismen v Assembler, C, C++, Pascal, Java | 5 | 502 | 13.04.2015 20:31 TieSTiK | | SURNE! Potrebujem pomoct s vylepsenim internetu SURNE! v Siete | 15 | 503 | 01.03.2013 14:43 shiro | | ASEMBLER:Určte počet slov obsahujúcich reťazec ASM alebo asm v Assembler, C, C++, Pascal, Java | 7 | 1419 | 25.03.2011 10:07 dury26 | | hdmi vystup v nVidia čipové sady | 1 | 1411 | 26.12.2010 13:18 brmbo | | Mŕtvy výstup v Audio programy | 2 | 479 | 08.05.2010 22:12 Victorious_ | | xml vystup v PHP, ASP | 6 | 581 | 21.08.2008 16:07 MKI-Miro | | double vystup v Zvuk | 3 | 488 | 21.01.2010 14:29 Tech | | optický výstup v Zvuk | 5 | 1246 | 01.11.2007 17:18 apet | | Coaxial vystup v Ostatné | 13 | 1558 | 18.09.2011 15:27 BIO | | vystup z funkcie v PHP, ASP | 15 | 829 | 13.09.2010 19:56 php30 |
| 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
|
|