summaryrefslogtreecommitdiff
path: root/sem2/lab3/draw.asm
diff options
context:
space:
mode:
Diffstat (limited to 'sem2/lab3/draw.asm')
-rw-r--r--sem2/lab3/draw.asm117
1 files changed, 117 insertions, 0 deletions
diff --git a/sem2/lab3/draw.asm b/sem2/lab3/draw.asm
new file mode 100644
index 0000000..7a3d30f
--- /dev/null
+++ b/sem2/lab3/draw.asm
@@ -0,0 +1,117 @@
+.model small
+.stack 100h
+.data
+
+screenArr db 2000 dup (0)
+
+.code
+.486
+
+start:
+ MOV ax,@DATA
+ MOV ds,ax
+
+ MOV ch,24
+ MOV cl,80
+
+ MOV bx, offset screenArr
+
+lines:
+ MOV dh,24
+ SUB dh,ch
+
+ columns:
+ MOV dl,80
+ SUB dl,cl
+
+ ; Устанавливаем курсор
+ PUSH bx
+ MOV bx,00h
+
+ MOV ah,02h
+ INT 10h
+
+ POP bx
+
+ ; Читаем символ
+ PUSH bx
+ MOV bx,00h
+
+ MOV ah,08h
+ INT 10h
+
+ POP bx
+
+ ; Записываем прочитанные символ в массив
+ MOV byte ptr [bx],al
+ INC bx
+
+ ; Пишем символ
+ PUSH bx
+ MOV bx,00h
+
+ MOV ah,0Ah
+ MOV al,'a'
+ INT 10h
+
+ POP bx
+
+ DEC cl
+ JNZ columns
+
+
+
+ DEC ch
+ JNZ lines
+
+input:
+ MOV dx,1900h
+ INT 10h
+
+ MOV ah,07h
+ INT 21h
+
+MOV bx, OFFSET screenArr
+
+lines2:
+ MOV dh,24
+ SUB dh,ch
+
+ columns2:
+ MOV dl,80
+ SUB dl,cl
+
+ ; Устанавливаем курсор
+ PUSH bx
+ MOV bx,00h
+
+ MOV ah,02h
+ INT 10h
+
+ POP bx
+
+
+ ; Пишем символ
+ PUSH dx
+ MOV dh,[bx]
+ PUSH bx
+
+ MOV bx,00h
+ MOV al,dh
+ INT 10h
+
+ POP bx
+ POP dx
+
+ INC bx
+
+ DEC cl
+ JNZ columns2
+
+ DEC ch
+ JNZ lines2
+
+exit:
+ MOV ax,4C00h
+ INT 21h
+END start \ No newline at end of file