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
|
;----------------------------------------
OutChar macro char ;макрос вывода символа
local l1,l2,loopCX
push cx
mov cx,2
mov bh,char
mov al,bh
shr al,04
loopCX:
cmp al,09h
jbe l1
add al,37h
jmp l2
l1:
add al,30h
l2:
mov es:[si],ax
mov al,bh
and al,00001111b
add si,2
loop loopCX
add di,01h
pop cx
endm
;----------------------------------------
ClrScr macro ;макрос очистки экрана
push ax
push bx
push cx
push dx
mov ah,06h ;AH 06 (прокрутка)
mov bh,07 ;Нормальный атрибут (черно/белый)
mov cx,0000 ;Верхняя левая позиция
mov dx,184Fh ;Нижняя правая позиция
int 10h ;Передача управления в BIOS
pop dx
pop cx
pop bx
pop ax
endm
;----------------------------------------------
.model small
.stack 100h
.data
.code
start:
.486
mov ax,@DATA
mov ds,ax
mov ax,0b800h
mov es,ax ;в es начало видеопамяти
mov si,0 ;смещение относительно начала видеопамяти
mov di,0 ;счетчик байтов
mov ah,7h ;атрибуты выводимых символов
mov cx,offset exit
sub cx,offset start ;адрес конца проги - адрес начала = ее размер!!!
ClrScr
CXne0:
mov al,cs:[di]
OutChar al
loop Cxne0
; input:
; MOV dx,1900h
; INT 10h
; MOV ah,07h
; INT 21h
exit:
mov ax,4C00h
int 21h
END start
|