| | |
| 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 |
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 | Napísal bbeni: 28.03.2009 17:58 | |
|
čo tak v 10 tkovej sústave
|
|
Registrovaný: 20.03.09 Prihlásený: 01.05.09 Príspevky: 4 Témy: 3 | Napísal autor témy james25: 28.03.2009 19:24 | |
|
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 | Napísal bbeni: 29.03.2009 13:12 | |
|
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 |
---|
| Assembler i8080 help v Assembler, C, C++, Pascal, Java | 1 | 297 | 24.03.2013 22:07 walther | | Assembler i8080 delenie v Assembler, C, C++, Pascal, Java | 1 | 436 | 12.04.2010 21:20 dEVIANT | | assembler i8080 - jedna mala chyba, pls help v Assembler, C, C++, Pascal, Java | 10 | 945 | 21.04.2010 17:20 JR55 | | ASSEMBLER POMOC(URGENTNE) v Assembler, C, C++, Pascal, Java | 0 | 405 | 13.04.2015 19:22 Matadot | | Assembler uloha - prosim pomoc v Assembler, C, C++, Pascal, Java | 2 | 842 | 28.05.2008 15:25 HT | | Assembler HDD info - pomoc v Assembler, C, C++, Pascal, Java | 3 | 926 | 07.12.2007 11:17 sento | | assembler pomoc s prevodom v Assembler, C, C++, Pascal, Java | 2 | 699 | 27.03.2010 19:10 blw90 | | assembler uloha pomoc s prevodom... v Assembler, C, C++, Pascal, Java | 1 | 606 | 28.03.2009 17:39 bbeni | | i8080 pretečenie akumulátora - problém v Assembler, C, C++, Pascal, Java | 0 | 247 | 12.04.2013 2:23 AM-JP | | Asm i8080: vypisat pocet slov s dlzkou 2 az 5 znakov v Assembler, C, C++, Pascal, Java | 26 | 3984 | 15.03.2011 13:47 katiMIR | | assembler v Assembler, C, C++, Pascal, Java | 1 | 1493 | 10.11.2006 18:14 Marco | | Assembler v Assembler, C, C++, Pascal, Java | 0 | 709 | 01.04.2009 21:02 bbeni | | ASSEMBLER v Assembler, C, C++, Pascal, Java | 8 | 1723 | 13.03.2007 20:39 My-reC | | Assembler v Assembler, C, C++, Pascal, Java | 0 | 792 | 31.03.2009 20:10 bbeni | | aky assembler? v Assembler, C, C++, Pascal, Java | 4 | 760 | 21.11.2007 9:49 euthanan | | Assembler 8086 v Assembler, C, C++, Pascal, Java | 2 | 610 | 27.03.2009 20:33 Ivan11114 |
| 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
|
|