Ak niekto robí zadania tak PM prosím a nejako sa dohodneme.
This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
Zobrazi prspevky Menuorg 1000
dcx sp ;inicializacia zasobnika (0FFFFh)
lxi h,text ;vypis text
call putstr
lxi h,text1 ;vypis text1
call putstr
lxi d,vlozeny ;adresa pre vstup retazca
call getline
lxi b,vlozeny
mvi d,0 ;pocet malych pismen
mvi e,0 ;pocet cislic
push psw ;vlozime si nulu do zasobnika, pocet vyhovujucich slov
jmp char_loop
char:
mvi d,0 ;vynulovanie pocitadla
mvi e,0 ;vynulovanie pocitadla
char_loop: ;citanie znakov a pocitanie cislic v slove
ldax b ;nacitanie znaku z retazca
inx b ;posun v retazci doprava
cpi 10 ;porovnanie pre koniec nacitavania, enter
jz koniec_nacitania ;
cpi 32 ;porovnanie na koniec slova, space=medzera
jz pocet_slov
cpi 'A' ;vacsie alebo rovne ako 0
jz increment
cpi 'S' ;mensie alebo rovne ako 9
jz increment
cpi 'M' ;vacsie alebo rovne ako 0
jz increment
cpi 'a' ;mensie alebo rovne ako 9
jz increment
cpi 's' ;mensie alebo rovne ako 9
jz increment
cpi 'm' ;mensie alebo rovne ako 9
jz increment
inr e ;zvysenie poctu cislic o 1
jmp char_loop
increment:
inr e
inr d ;zvysenie poctu pismen o 1
jmp char_loop
pocet_slov: ;pocitanie vyhovujucich slov
mov a,d ;presun hodnoty z registra D do akumulatora
cmp e ;porovnanie akumulatora a registra E
jc char
pop psw ;vyber zo zasobnika do akumulatora
inr a ;zvysenie poctu vyhovujucich slov
push psw ;vlozenie z akumulatora do zasobnika
jmp char
koniec_nacitania: ;osetrenie ak sme spracovali posledne slovo
mov a,d
cmp e ;porovnanie ci slovo obsahuje aspon 2 cislice
jc prevod
pop psw
inr a ;zvysenie poctu vyhovujucich slov
push psw
jmp prevod
prevod: ;prevod 4b binarneho cisla na sestnastkove [jednotky]
pop psw
mov h,a
ani 15 ;logicky sucin
push psw
cpi 10 ;porovnananie ci je cislo mensie ako 10
jc prevod1
pop psw ;ak je mensie skoci na koniec1
mov b,a
mvi a,7
add b ;pripocitanie 7, lebo su to pismena, vacsie ako 10
push psw
prevod1: ;prevod 4b binarneho cisla na sestnastkove [desiatky]
mov a,h
rrc ;posun o 1b doprava
rrc
rrc
rrc
ani 15 ;logicky sucin
push psw
cpi 10 ;porovnananie ci je cislo mensie ako 10
jc vypis ;ak je mensie skoci na koniec1
pop psw
mov b,a
mvi a,7
add b ;pripocitanie 7
push psw
vypis: ;vypis poctu slov sestnastkovo
lxi h,text2
call putstr
pop psw
adi '0'
call putchar ;vypisanie sestanstkovej cislice [desiatky]
pop psw
adi '0'
call putchar ;vypisanie sestanstkovej cislice[jednotky]
call newline
hlt
include 'examples\8080\include\getline.inc'
include 'examples\8080\include\putstr.inc'
include 'examples\8080\include\putchar.inc'
include 'examples\8080\include\newline.inc'
text: db 'Program zistuje pocet slov obsahujucich retazec ASM alebo asm',10,13
text1: db 'Zadaj retazec, ukonci stlacenim enter ',0,10,13
text2: db 10,13,'Pocet slov, v hexa tvare: 0x',0
vlozeny: ds 50