Kód: Vybrať všetko
;1. Zobrazte zvoleny znak (napr.srdiecko, pismeno, hviezdicka) na obrazovke v bode so suradnicami (5,20).
; Naprogramujte postupny pohyb kurzora v riadku, kde sa nachadza uvedeny znak. Ak sa kurzor dostane na miesto znaku,
;tento znak zmizne z obrazovky , za urcity cas sa opet zobrazi . Blikanie znaku vykonajte este 3x s viditelnym oneskorenim.
data segment ; definicia datoveho segmentu
ZNAK db '*$' ; znak na zobrazenie
stlpec db 20 ; premenna uchovavajuca cislo stlpca
data ends
code segment ; definicia programoveho segmentu
assume CS:code, DS:data
clrscr macro ; makro na vycistenie konzoly
mov AX,3
int 10H
endm
presun macro stlpec ; makro na presun kurzora na zadanu poziciu (stlpec)
mov AH,2
mov DH,5 ; cislo riadku napevno
mov DL,stlpec
mov BH,0
int 10H
endm
vypis proc ; makro na vypis textu na zadanej pozicii
mov DX, offset ZNAK
mov AH,9
int 21H
endp
delay proc ; procedura loopuje n-krat, kde n je druha mocnina konstanty
push cx ; uschovaj povodnu hodnotu cx
mov cx, 6FFh ; nastav cx pre vonkajsi cyklus
d: push cx ; uschovaj hodnotu cx vonkajsieho cyklu
de: loop de ; vnutorny cyklus
pop cx ; obnov cx vonkajsej slucky
loop d ; rob vonkajsi cyklus 40000x
pop cx ; obnov povodne cx pred procedurou
ret ; navrat z procedury
endp ; koniec definicie procedury
blik macro ; macro na blikanie znaku
clrscr ; vycistenie konzoly(zmazanie znaku)
presun stlpec ; presun na poziciu(clrscr vrati na 0,0 )
call delay ; cas, ked neni znak vidno
call vypis ; vypis znaku
call delay ; cas, ked je znak vidno
endm
main proc
mov AX,seg data ; priradenie segmentovej adresy datoveho segmentu do registra DS
mov DS,AX
mov CX,20 ; pocet presunov kurzora
clrscr
presun stlpec ; vycistenie obrazovky
call vypis ; pociatocny vypis znaku
mov stlpec,0 ; znulovanie premennej stlpec na presun na zaciatok
slucka: push CX ; ulozenie CX (vnutri cycklu sa bude prepisovat)
presun stlpec ; presun kurzora
call delay ;
inc stlpec ;
pop CX ; opatovne nacitanie CX
loop slucka ; opakovat cyklus, ak CX != 0
mov CX,3 ; pocet bliknuti (3x)
bliksl: blik ; bliknutie, dekrementuje cx
loop bliksl
clrscr
mov ah,4Ch
int 21H
ret
endp
START:
call main
code ends
end START