summaryrefslogtreecommitdiff
path: root/sem2/lab3/draw.asm
blob: 7a3d30f13e0517b377260e40235511d35ec3586b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
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