Stránka: 1 z 1
| [ Príspevkov: 4 ] | |
Autor | Správa |
---|
Registrovaný: 20.03.09 Prihlásený: 01.05.09 Príspevky: 4 Témy: 3 | 3 |
cawte, potreboval by som pomoct s binarnym vypisom programu. Ulohou programu je pocitat slova, ktore obsahuju len velke pismena abecedy a tento pocet ma byt vypisany v dvojkovej sustave. Program, aspon myslim, ze je kompletny (nejako som ho pozliepal), len mam pocit, ze je tam problem s registrami (asi som ich pomiesal), proste ocekujte to pls niekto, diky.
Kód:
org 1000
dcx sp ; inicializacia zasobnika (0FFFFh)
lxi h,text1 ; skopiruj text1 do h call putstr ; vypis uvodny text
mvi b,0 ; pocitadlo vyhovujucich slov mvi c,0 ; pocitadlo vyhovujucich znakov v slove mvi d,0 ; pocitadlo vsetkych znakov v slove
char_loop: call getchar ; nacita sa zadany znak do registra "a" cpi 10 ; porovna sa register "a" s backspacom jz char_end ; skoci sa na char_end, ak sa rovna cpi 13 ; porovna sa register "a" s enterom jz char_end ; skoci sa na char_end, ak sa rovna cpi 32 ; porovna sa register "a" s medzerou jz char_space ; skoci sa na char_space, ak sa rovna cpi 65 ; nacitany znak sa porovna s 'A' jz char_add ; skoci sa na char_add, ak sa rovna cpi 66 ; dalej sa nacitavaju a porovnavaju vsetky ASCII jz char_add ; kody znakov velkej abecedy, az po 'Z' cpi 67 jz char_add cpi 68 jz char_add cpi 69 jz char_add cpi 70 jz char_add cpi 71 jz char_add cpi 72 jz char_add cpi 73 jz char_add cpi 74 jz char_add cpi 75 jz char_add cpi 76 jz char_add cpi 77 jz char_add cpi 78 jz char_add cpi 79 jz char_add cpi 80 jz char_add cpi 81 jz char_add cpi 82 jz char_add cpi 83 jz char_add cpi 84 jz char_add cpi 85 jz char_add cpi 86 jz char_add cpi 87 jz char_add cpi 88 jz char_add cpi 89 jz char_add cpi 90 ; nacitany znak sa porovna so 'Z' jz char_add ; skonci sa na char_add, ak sa rovna inr d ; inkrementuje sa pocitadlo vsetkych znakov v slove jmp char_loop ; nacita sa dalsi znak
char_add: inr c ; inkrementuje sa pocitadlo vyhovujucich znakov v slove inr d ; inkrementuje sa pocitadlo vsetkych znakov v slove jmp char_loop ; nacita sa dalsi znak
char_space: mov a,d ; pocitadlo vsetkych znakov v slove sa skopiruje do registra "a" cpi 0 ; nebola prvy znak medzera? jz char_loop ; ak ano, nacita sa dalsi znak cmp c ; porovna sa, ci vsetky znaky boli vyhovujuce mvi d,0 ; vynuluje sa pocitadlo vsetkych znakov v slove mvi c,0 ; vynuluje sa pocitadlo vyhovujucich znakov v slove jnz char_loop ; nacita sa dalsi znak inr b ; inkrementuje sa pocitadlo vyhovujucich slov jmp char_loop ; nacita sa dalsi znak
char_end: mov a,d ; skopiruje sa pocitadlo vsetkych znakov v slove do registra "a" cpi 1 ; ak nie su ziadne dalsie znaky, jc print ; pokracuje sa vo vypise cmp c ; inak sa kontroluje, ci posledne slovo bolo spravne jnz print ; ak nie, pokracuje sa vo vypise inr b ; ak ano, inkrementuje sa pocitadlo vyhovujucich slov
celociselny_zvisok_po_deleni: sub b ; odcita b od a cmp b ; porovna b s a jnc celociselny_zvisok_po_deleni ; ak je a < b skonci ret ; vrati sa spet
delenie_celeho_cisla: mvi h,0; _delenie: sub b ; odcita b od a inr h ; zvisi h cmp b ; porovna b s a jnc _delenie ; ak je a < b skonci mov a, h ret ; vrati sa spet
binarny_prevod: mvi a,0 ; do registra a da 0 sta 20 ; zapise obsah registra a do pamete 20 sta 21 ; zapise obsah registra a do pamete 21 sta 22 ; zapise obsah registra a do pamete 22 sta 23 ; zapise obsah registra a do pamete 23 sta 24 ; zapise obsah registra a do pamete 24 sta 25 ; zapise obsah registra a do pamete 25 sta 26 ; zapise obsah registra a do pamete 26 sta 27 ; zapise obsah registra a do pamete 27 sta 28 ; zapise obsah registra a do pamete 28 sta 29 ; zapise obsah registra a do pamete 29
mov a, c ; do registra a da obsah registra c sta 20 ; zapise obsah registra a do pamete 20 mvi b,2 ; do registra b da 2
call celociselny_zvisok_po_deleni ; zavola celociselny_zvisok_po_deleni sta 22 ; zapise obsah registra a do pamete 22 lda 20 ; obsah pamete 20 da do registra a
call delenie_celeho_cisla ; zavola delenie_celeho_cisla sta 21 ; zapise obsah registra a do pamete 21 call celociselny_zvisok_po_deleni ; zavola celociselny_zvisok_po_deleni sta 23 ; zapise obsah registra a do pamete 23 lda 21 ; obsah pamete 21 da do registra a call delenie_celeho_cisla ; zavola delenie_celeho_cisla sta 21 ; zapise obsah registra a do pamete 21 call celociselny_zvisok_po_deleni ; zavola celociselny_zvisok_po_deleni sta 24 ; zapise obsah registra a do pamete 24 lda 21 ; obsah pamete 21 da do registra a call delenie_celeho_cisla ; zavola delenie_celeho_cisla sta 21 ; zapise obsah registra a do pamete 21 call celociselny_zvisok_po_deleni ; zavola celociselny_zvisok_po_deleni sta 25 ; zapise obsah registra a do pamete 25 lda 21 ; obsah pamete 21 da do registra a call delenie_celeho_cisla ; zavola delenie_celeho_cisla sta 21 ; zapise obsah registra a do pamete 21 call celociselny_zvisok_po_deleni ; zavola celociselny_zvisok_po_deleni sta 26 ; zapise obsah registra a do pamete 26 lda 21 ; obsah pamete 21 da do registra a call delenie_celeho_cisla ; zavola delenie_celeho_cisla sta 21 ; zapise obsah registra a do pamete 21 call celociselny_zvisok_po_deleni ; zavola celociselny_zvisok_po_deleni sta 27 ; zapise obsah registra a do pamete 27 lda 21 ; obsah pamete 21 da do registra a call delenie_celeho_cisla ; zavola delenie_celeho_cisla sta 21 ; zapise obsah registra a do pamete 21 call celociselny_zvisok_po_deleni ; zavola celociselny_zvisok_po_deleni sta 28 ; zapise obsah registra a do pamete 28 lda 21 ; obsah pamete 21 da do registra a call delenie_celeho_cisla ; zavola delenie_celeho_cisla sta 21 ; zapise obsah registra a do pamete 21 call celociselny_zvisok_po_deleni ; zavola celociselny_zvisok_po_deleni sta 29 ; zapise obsah registra a do pamete 29 lda 29 ; obsah pamete 29 da do registra a
adi 48 ; k obsahu registra a pripocita 48 out 11h ; vypise obsah registra a na obrazovku lda 28 ; obsah pamete 28 da do registra a adi 48 ; k obsahu registra a pripocita 48 out 11h ; vypise obsah registra a na obrazovku lda 27 ; obsah pamete 27 da do registra a adi 48 ; k obsahu registra a pripocita 48 out 11h ; vypise obsah registra a na obrazovku lda 26 ; obsah pamete 26 da do registra a adi 48 ; k obsahu registra a pripocita 48 out 11h ; vypise obsah registra a na obrazovku mvi a,' ' ; do registra a da ' ' out 11h ; vypise obsah registra a na obrazovku lda 25 ; obsah pamete 25 da do registra a adi 48 ; k obsahu registra a pripocita 48 out 11h ; vypise obsah registra a na obrazovku lda 24 ; obsah pamete 24 da do registra a adi 48 ; k obsahu registra a pripocita 48 out 11h ; vypise obsah registra a na obrazovku lda 23 ; obsah pamete 23 da do registra a adi 48 ; k obsahu registra a pripocita 48 out 11h ; vypise obsah registra a na obrazovku lda 22 ; obsah pamete 22 da do registra a adi 48 ; k obsahu registra a pripocita 48 out 11h ; vypise obsah registra a na obrazovku ret ; vrati sa spet
print: lxi h,text2 ; skopiruje sa text2 do h call putstr ; vypise sa text2 mov a,b ; skopiruje sa pocitadlo vyhovujucich slov do registra "a" adi '0' ; hodnota a jej ASCII tvar ... call putchar ; vypise sa znak call newline ; vypise sa novy riadok
hlt ; ukonci sa program
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'
text1: db 'Pocet slov obsahujucich len velke pismena ...',10,13,'Vloz text: ',0 text2: db 10,13,'Slov je: ',0 vlozeny: ds 30
|
|
Registrovaný: 14.03.09 Prihlásený: 16.10.13 Príspevky: 25 Témy: 10 | 10 |
čo tak v 10 tkovej sústave
|
|
Registrovaný: 20.03.09 Prihlásený: 01.05.09 Príspevky: 4 Témy: 3 | 3 |
bbeni píše: čo tak v 10 tkovej sústave
musi to byt v dvojkovej
|
|
Registrovaný: 14.03.09 Prihlásený: 16.10.13 Príspevky: 25 Témy: 10 | 10 |
ako by to bolo 10 tkovej sústave
|
|
Stránka: 1 z 1
| [ Príspevkov: 4 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| v Assembler, C, C++, Pascal, Java | 1 | 328 | 24.03.2013 22:07 walther | | v Assembler, C, C++, Pascal, Java | 1 | 477 | 12.04.2010 21:20 dEVIANT | | v Assembler, C, C++, Pascal, Java | 10 | 977 | 21.04.2010 17:20 JR55 | | v Assembler, C, C++, Pascal, Java | 0 | 445 | 13.04.2015 19:22 Matadot | | v Assembler, C, C++, Pascal, Java | 2 | 879 | 28.05.2008 15:25 HT | | v Assembler, C, C++, Pascal, Java | 3 | 968 | 07.12.2007 11:17 sento | | v Assembler, C, C++, Pascal, Java | 2 | 740 | 27.03.2010 19:10 blw90 | | v Assembler, C, C++, Pascal, Java | 1 | 637 | 28.03.2009 17:39 bbeni | | v Assembler, C, C++, Pascal, Java | 0 | 277 | 12.04.2013 2:23 AM-JP | | v Assembler, C, C++, Pascal, Java | 26 | 4050 | 15.03.2011 13:47 katiMIR | | v Assembler, C, C++, Pascal, Java | 1 | 1538 | 10.11.2006 18:14 Marco | | v Assembler, C, C++, Pascal, Java | 0 | 748 | 01.04.2009 21:02 bbeni | | v Assembler, C, C++, Pascal, Java | 0 | 829 | 31.03.2009 20:10 bbeni | | v Assembler, C, C++, Pascal, Java | 8 | 1789 | 13.03.2007 20:39 My-reC | | v Assembler, C, C++, Pascal, Java | 2 | 656 | 27.03.2009 20:33 Ivan11114 | | v Assembler, C, C++, Pascal, Java | 4 | 786 | 21.11.2007 9:49 euthanan |
|