| | |
| Stránka: 1 z 1
| [ Príspevok: 1 ] | |
Autor | Správa |
---|
Registrovaný: 14.03.09 Prihlásený: 16.10.13 Príspevky: 25 Témy: 10 | Napísal bbeni: 31.03.2009 20:10 | |
|
skontrolujte prosím nasledujúci program,
je tam nejaká chyba s prevodom do 2 sústavy , keďže vypisuje v 10 tkovej
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 43 ; nacitany znak sa porovna s '+' jz char_add ; skoci sa na char_add, ak sa rovna cpi 42 ; nacitany znak sa porovna s '*' jz char_add ; skoci sa na char_add, ak sa rovna cpi 47 ; nacitany znak sa porovna s '/' jz char_add;skoci sa na char_add, ak sa rovna cpi 45 ; nacitany znak sa porovna s '-' jz char_add;skoci 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 neobsahujucich aritmeticke operatory ...',10,13,'Vloz text: ',0 text2: db 10,13,'Slov je: ',0 vlozeny: ds 30
|
|
| Stránka: 1 z 1
| [ Príspevok: 1 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| Assembler v Assembler, C, C++, Pascal, Java | 0 | 708 | 01.04.2009 21:02 bbeni | | assembler v Assembler, C, C++, Pascal, Java | 1 | 1493 | 10.11.2006 18:14 Marco | | ASSEMBLER v Assembler, C, C++, Pascal, Java | 8 | 1723 | 13.03.2007 20:39 My-reC | | aky assembler? v Assembler, C, C++, Pascal, Java | 4 | 760 | 21.11.2007 9:49 euthanan | | Kniha : Assembler v Assembler, C, C++, Pascal, Java | 1 | 508 | 16.04.2013 22:34 XOLOO | | assembler zadanie v Assembler, C, C++, Pascal, Java | 1 | 1011 | 09.03.2010 20:27 ac.milan | | zacat assembler v Assembler, C, C++, Pascal, Java | 15 | 1107 | 16.12.2011 23:24 Ďuri | | Assembler úloha v Assembler, C, C++, Pascal, Java | 0 | 792 | 02.02.2008 7:37 HT | | Kalkulačka - assembler v Assembler, C, C++, Pascal, Java | 0 | 677 | 10.11.2011 18:54 Reverser | | Assembler 8086 v Assembler, C, C++, Pascal, Java | 11 | 1288 | 19.05.2010 22:38 JR55 | | Assembler 8086 v Assembler, C, C++, Pascal, Java | 3 | 605 | 21.04.2009 20:05 Fico | | Assembler - úloha v Assembler, C, C++, Pascal, Java | 2 | 905 | 22.10.2007 15:04 programator | | Assembler 8086 v Assembler, C, C++, Pascal, Java | 2 | 610 | 27.03.2009 20:33 Ivan11114 | | Assembler 8080 v Assembler, C, C++, Pascal, Java | 5 | 1291 | 02.04.2010 20:44 Fico | | Assembler binary v Assembler, C, C++, Pascal, Java | 23 | 1205 | 18.04.2012 7:17 Fico | | Assembler Atmega8 v Assembler, C, C++, Pascal, Java | 5 | 1158 | 17.10.2009 17:13 Logik |
| 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
|
|