Progr segment
assume cs:Progr,ds:dane,es:ekran,ss:stosik
start:
mov ax,seg dane ;ładuj rejestry segmentowe DS i ES
mov ds,ax
mov ax,seg ekran ;pamięć ekranu do ES
mov es,ax
;mov ax,seg code
mov ax,stosik
mov ss,ax
mov sp,offset stosik
MOV AH,0 ;wybór trybu pracy monitora
MOV AL,3 ;text 80x25 kolor
INT 10H ;obsługa ekranu
;mov bx,0
; Ukryj migotający kursor
;mov ah, 1
;mov ch, 2bh
;mov cl, 0bh
;int 10h
; Czeka na naciśnięcie dowolnego klawisza
;mov ah, 00h
;int 16h
;mov ek[2000],219d ; Znak ASCII blok zamalowany
;mov atr[2000],12d ; czerwony
again:
jmp losuj
t2:
jmp skopiuj
t1:
mov si,[losowe+bx]
mov ax,si
mov cx,160
mul cx
mov si,ax
mov ax, 0b800h
mov ds,ax
mov cx,80
petla:
mov ek[si],219d
mov atr[si],12d
add si,2
loop petla
jmp przywroc
jmp koniec
int 21h
przywroc:
;mov ax,0B800h
;mov ds,ax
;mov ax,[losowe+bx]
;mov cx,160
;mul cx
cld
mov si,offset Bufor
mov di,[losowe+bx]
mov ax,di
mov cx,160
mul cx
mov di,ax
mov cx,80
rep movsw
jmp again
skopiuj:
mov ax,0B800h
mov ds,ax
mov si,[losowe+bx]
mov ax,si
mov cx,160
mul cx
mov si,ax
mov ax,seg dane
mov ds,ax
cld
mov di,offset Bufor
mov cx,80
rep movsw
jmp t1
losuj:
add bx,2
cmp bx,10
jz koniec
jmp t2
koniec:
mov al, 0
mov ah, 4ch
int 21h
Progr ends
dane segment
Bufor db 160 dup(?)
losowe dw 4,8,10,12,14,20,24
dane ends
stosik segment
stosik ends
ekran segment AT 0B800h
ek db ?
atr db ?
ekran ends
end start