skontrolujte niekto prosim nasledujuci kod:
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 slov neobsahujicich +-*/
mvi c,1 ; pomocna promenna boolean typ
lxi h,text1
chloop:
call getch
cpi 10 ; porovna sa register "a" s backspacom
jz chend ; skoci sa na char_end, ak sa rovna
cpi 13 ; porovna sa register "a" s enterom
jz chend ; skoci sa na char_end, ak sa rovna
cpi 32 ; porovna sa register "a" s medzerou
jz chspac ; skoci sa na char_space, ak sa rovna
cpi 43 ; nacitany znak sa porovna s '+'
jz chadd ; skoci sa na char_add, ak sa rovna
cpi 42 ; nacitany znak sa porovna s '*'
jz chadd ; skoci sa na char_add, ak sa rovna
cpi 47 ; nacitany znak sa porovna s '/'
jz chadd;skoci sa na char_add, ak sa rovna
cpi 45 ; nacitany znak sa porovna s '-'
jz chadd;skoci sa na char_add, ak sa rovna
jmp chloop ; nacita sa dalsi znak
chadd:
mvi c,0
jmp chloop ; nacita sa dalsi znak
chspac:
mov a,b
add c
mov b,a
mvi c,1
jmp chloop ; nacita sa dalsi znak
chend:
call print
hlt
del: ; deli a/b Vraci a, zbytek b
mvi h,0;
deleni:
cmp b ; porovna b s a
jc nedel ; ak je a < b skonci
sub b ; odcita b od a
inr h ; zvisi h
jmp deleni
nedel:
mov b,a
mov a, h
ret ; vrati sa spet
prevod:
cpi 0
jz konec
mvi b,10
call del
push psw
mov a,b
adi 48
mov M,a
dcx h
pop psw
jmp prevod
konec:
adi 48
mov M,a
ret
print:
mov a,b
lxi h,vloz+4
call prevod
lxi h,text2 ; skopiruje sa text2 do h
call putstr ; vypise sa text2
call newline ; vypise sa novy riadok
ret
getch:
mov a,M
inx h
ret
text1: db 'Pocet slov +neobsahujucich aritmeticke operatory ...',10,13,'Vloz text: ',0
text2: db 10,13,'Slov je: '
vloz: db ' ',0
hlt ; ukonci sa program
include 'examples/8080/include/getchar.inc'
include 'examples/8080/include/getline.inc'
include 'examples/8080/include/putstr.inc'
include 'examples/8080/include/putchar.inc'
include 'examples/8080/include/newline.inc'
je tam nejaká chyba vstup,výstup,možno aj v prevode