summaryrefslogtreecommitdiff
path: root/sem2/lab3/vdraw2.asm
diff options
context:
space:
mode:
Diffstat (limited to 'sem2/lab3/vdraw2.asm')
-rw-r--r--sem2/lab3/vdraw2.asm68
1 files changed, 68 insertions, 0 deletions
diff --git a/sem2/lab3/vdraw2.asm b/sem2/lab3/vdraw2.asm
new file mode 100644
index 0000000..4223179
--- /dev/null
+++ b/sem2/lab3/vdraw2.asm
@@ -0,0 +1,68 @@
+.model small
+.stack 100h
+.data
+
+screenArr dw 1920 dup (0)
+
+.code
+
+clearScreen PROC NEAR
+
+ mov cx,3840
+ mov bx, offset screenArr
+
+ saveScreen:
+ mov dx, es:[si]
+ mov word ptr [bx], dx
+ inc si
+ inc bx
+ loop saveScreen
+
+ mov cx, 3840
+ mov si, 0
+
+ fillScreen:
+ mov al,0
+ mov es:[si], ax
+ add si, 2
+ loop fillScreen
+
+ ret
+
+clearScreen ENDP
+
+start:
+.486
+mov ax,@DATA
+mov ds,ax
+
+mov ax,0b800h
+mov es,ax ;в es начало видеопамяти
+mov si,0 ;смещение относительно начала видеопамяти
+mov ah,7h ;атрибуты выводимых символов
+
+CALL clearScreen
+
+input:
+ MOV dx,1900h
+ INT 10h
+
+ MOV ah,07h
+ INT 21h
+
+mov bx, offset screenArr
+mov si, 0
+mov cx, 3840
+
+restoreScreen:
+ mov dx, word ptr [bx]
+ mov es:[si], dx
+ inc bx
+ inc si
+loop restoreScreen
+
+exit:
+ mov ax,4C00h
+ int 21h
+
+END start \ No newline at end of file