Cawte, potraboval by som pomoc. Jedna sa o to ze mam spravit zadanie s assembleru (ktoremu zas tak nerozumiem) tak som ho na nete vygooglil a prechadzal som si ten program postupne a snazil sa ho pochopit, ale ani za svet neviem prist nato ako mam previest to cislo ktore zistim do 10tkovej sustavy (mam to totiz odovzdat s desiatkovym vypisom) preto ak by mi dako mohol poradit...(nemusite mi to spravit iba potrebujem radu ako sa to prevadza) tak by som bol rad.. za pomoc vopred dakujem=)
Citácia:
org 1000
dcx sp ; inicializacia zasobnika (0FFFFh)
lxi h,text1
call putstr ; vypis text1
mvi b,0
mvi d,0
mvi e,0 ; vynuluj registre b,d,e
zisti:
call getchar
cpi 10
jz koniec_vstupu
cpi 13 ; bol stlaceny enter?
jz koniec_vstupu
cpi 32 ; bola stlacena medzera?
jz slovo
cpi 58 ; bolo stlacene nejake cislo? horna hranica
jnc pismeno
cpi 48 ; dolna hranica
jc zisti
inr d ; ak ano tak inkrementuj d
jmp zisti
pismeno:
cpi 91 ; bolo stlacene nejake velke pismeno? horna hranica
jnc zisti
cpi 65 ;dolna hranica
jc zisti
inr b ; ak ano tak inkrementuj b
jmp zisti
pridaj: ; e=pocet slov vyhovujucich podmienke
inr e
mvi b,0
mvi d,0 ; vynuluj registre b,d
jmp zisti
slovo:
mov a,d ; je viac velkych pismen ako cisel?
cmp b
jc pridaj ;ak ano tak skoc na pridaj
mvi b,0
mvi d,0 ; ak nie tak vynuluj registre b,d
jmp zisti
koniec_vstupu:
mov a,d ; testovanie podsledneho slova ak nebola za nim stlacena medzera
cmp b
jc increment
mvi b,0
mvi d,0 ; ak podmienka neplati, vynuluj registre b,d
jmp vypis
increment: ;inkrement ak plati ze posledne slovo vyhovuje a skoc na vypis
inr e
jmp vypis
vypis:
lxi h,text2
call putstr
mvi b,0
mvi a,0
mvi c,0
mov b,e
mov a,b
mvi c,11000000b
ana c
rlc
rlc
adi 48
out 11h
mov a,b
mvi c,00111000b
ana c
rar
rar
rar
adi 48
out 11h
mov a,b
mvi c,00000111b
ana c
adi 48
out 11h
adi '0'
call newline
hlt
include 'examples\8080\include\getline.inc'
include 'examples\8080\include\putstr.inc'
include 'examples\8080\include\getchar.inc'
include 'examples\8080\include\newline.inc'
include 'examples\8080\include\putchar.inc'
text1: db 10,13,'Vloz text: ',0
text2: db 10,13,'Pocet slov v ktorych je viac velkych pismen ako cisel v OCT: ',0
vlozeny: ds 50