zdravím, potreboval by som naprogramovať tento program: Určte počet slov, v ktorých súčet ASCII kódov znakov nie je deliteľný dvoma.Potrebujem to do školy. Na internete som našiel niečo take, ale mam pocit,že to moc nefunguje.. stači mi aby to šlo.. lebo ja tomu vobec nechápem..
org 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 vyhov znakov
mvi e,0 ;pocet vsetkych znakov
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 '0' ;vacsie alebo rovne ako 0
jc increment
cpi '9' + 1 ;mensie alebo rovne ako 9
jnc increment
inr e
inr d ;zvysenie poctu cislic o 1
jmp char_loop
increment:
inr e
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 len cislice',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
Fórum › Assembler
8080 súčet ASCII kódov znakov nie je deliteľný dvoma.
Zjistit počet nových příspěvků
Přidej příspěvek
Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
Uživatelé prohlížející si toto vlákno
Uživatelé on-line: 0 registrovaných, 160 hostů
Podobná vlákna
Zámena ASCII znakov — založil nevedko01
Vtipne casti zdrojovych kodov — založil entity
Pomoc z dvoma príkladmi — založil zonda
Sucet prvych X prvocisel — založil RedSoul
Ako zdieľať hodnotu premennej medzi dvoma skriptami? — založil Martin