summaryrefslogtreecommitdiff
path: root/sem2/lab3/Dump.asm
blob: 93092f34f5c06e2e093d4e1181813655ed45a597 (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
;----------------------------------------
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