Набор простых процедур на Ассемблере
- VESA-REAL-640x480x16M Закрашенный прямоугольник
- Binary to Ascii Decimal
- VESA-REAL-640x480x16M Горизонтальная линия
- KeyPressed
- Перевод строки
- ReadKey
- Вывод строки
- По координатам выдает адрес видеопамяти (для 80×25)
- Показывает код клавиши для ReadKey.prc
- Пример программы заменяющей шрифты
VESA-REAL-640x480x16M Закрашенный прямоугольник
[The requested file wp-content/uploads/2006/09/bar4.asm could not be found]
Binary to Ascii Decimal
PROC BinToAscDec ;ax - Число
push bx ;cx - Минимальное кол-во вывод. чисел
mov bx,10 ;di - Адресс строки с рез-том.
call NumToAscii
pop bx
ret
ENDP BinToAscDec
;*****************************************************************************
PROC NumToAscii
push dx
push di
push si
xor si,si
jcxz NTA20
NTA10: xor dx,dx
div bx
call HexDigit
push dx
inc si
loop NTA10
NTA20: inc cx
or ax,ax
jnz NTA10
mov cx,si
jcxz NTA40
cld
NTA30: pop ax
stosb
loop NTA30
NTA40: mov [byte di],0
pop si
pop di
pop dx
ret
ENDP NumToAscii
;*****************************************************************************
PROC HexDigit
cmp dl,10
jb HD10
add dl,"A"-10
ret
HD10: or dl,"0"
ret
ENDP HexDigit
Download this code: bintoasc.asm
VESA-REAL-640x480x16M Горизонтальная линия
; call [@data:WinFuncPtr] Адрес возвращаемый функцией 01h VESA BIOS
; [@data:BankNr] Переменная типа DW - номер текущего банка
;****************************************************************************
PROC HorLine4 ;Горизонтальная линий
push cx
push dx
shl ebx, 9 ;Длина : cx
imul ebx, ebx, 5 ;Координата X : ax
shl ax, 2 ;Координата Y : bx
add eax, ebx ;Цвет : edx
mov si,ax ;00 00 00 00
shr eax, 16 ;-- RR GG BB
mov dx,ax
cmp dx, [@data:BankNr]
je HorLine4_1
mov [@data:BankNr] ,dx
xor bx,bx ;¬Переключим
call [@data:WinFuncPtr] ;-банк
HorLine4_1: pop dx
pop cx
HorLine4_2: mov [es:si],edx
add si,4
jnc HorLine4_3
push dx
inc [Word Ptr BankNr]
mov dx,[@data:BankNr]
xor bx,bx ;¬Переключим
call [@data:WinFuncPtr] ;-банк
pop dx
HorLine4_3: loop HorLine4_2
ret
ENDP HorLine4
;****************************************************************************
Download this code: horline4.asm
KeyPressed
PROC KeyPressed ;zf=0, если нажата клавиша
push ax
mov ah,1
int 16h
pop ax
ret
ENDP KeyPressed
Download this code: keypress.asm
Перевод строки
PROC NewLine
mov ah,2
mov dl,13
int 21h
mov di,10
int 21h
ret
ENDP NewLine
Download this code: newline.asm
ReadKey
PROC ReadKey ;Чтение клавиши
xor ah,ah ;zf=0 (ah=1) : (JNZ) al = ASCII - символ
int 16h ;zf=1 (ah=0) : (JZ ) al = ASCII - код упр.клав.
or al,al
jnz met10
xchg ah,al
add al,32
jmp short met20
met10: xor ah,ah
cmp al,32
jb met20
inc ah
met20: or ah,ah
ret
ENDP ReadKey
Download this code: readkey.asm
Вывод строки
PROC StrWrite
push ax
push di
xor al,al
mov cx,0FFFFh
cld
repnz scasb
not cx
dec cx
pop di
pop ax
push ax
push bx
push dx
mov bx,1
mov dx,di
mov ah,40h
int 21h
pop dx
pop bx
pop ax
ret
ENDP StrWrite
Download this code: strwrite.asm
По координатам выдает адрес видеопамяти (для 80×25)
;Эта табличка покладается в сегмент данных
BytesPerRowa=80*2
rowa=0
LABEL ScRow Word
REPT 25
DW (rowa*BytesPerRowa)
rowa=rowa+1
ENDM
;Ну а енто код, ну естественно в кодовый сегмент
PROC SetVidAddr ;подготовить адресс видеопамяти.
xor bh, bh ;dx - координаты
mov bl, dh ;Возвращяет в di адресс
shl bx, 1
mov di, [ScRow+bx]
xor dh, dh
shl dx, 1
add di, dx
ret
ENDP SetVidAddr
Download this code: svidaddr.asm
Показывает код клавиши для ReadKey.prc
SMART
IDEAL
MODEL small
STACK 128
cr equ 13
lf equ 10
DATASEG
exCode DB 0
CharKey DB "Charaster key:",0
FunctKey DB "Function key:",0
NumString DB 7 DUP (?)
Welcome DB cr,lf,"Display key values By Misha Krivij"
DB cr,lf,"Press any key to know her code"
DB cr,lf,"100% Assembler",cr,lf,lf,0
CODESEG
Start: mov ax,@data
mov ds,ax
mov es,ax
mov di, offset Welcome
call StrWrite
Repeat: call KeyPressed
jz Repeat
call ReadKey
mov di,offset CharKey
jnz m10
cmp al,27
je Exit
mov di,offset FunctKey
m10: call StrWrite
xor ah,ah
mov cx,1
mov di,offset NumString
call BinToAscDec
call StrWrite
call NewLine
jmp Repeat
Exit: mov ah,04Ch
mov al,[exCode]
int 21h
;*****************************************************************************
PROC KeyPressed ;zf=0, если нажата клавиша
push ax
mov ah,1
int 16h
pop ax
ret
ENDP KeyPressed
;*****************************************************************************
PROC ReadKey ;Чтение клавиши
xor ah,ah ;zf=0 (ah=1) : (JNZ) al = ASCII - символ
int 16h ;zf=1 (ah=0) : (JZ ) al = ASCII - код упр.клав.
or al,al
jnz met10
xchg ah,al
add al,32
jmp short met20
met10: xor ah,ah
cmp al,32
jb met20
inc ah
met20: or ah,ah
ret
ENDP ReadKey
;*****************************************************************************
PROC BinToAscDec ;ax - Число
push bx ;cx - Минимальное кол-во вывод. чисел
mov bx,10 ;di - Адресс строки с рез-том.
call NumToAscii
pop bx
ret
ENDP BinToAscDec
;*****************************************************************************
PROC NumToAscii
push dx
push di
push si
xor si,si
jcxz NTA20
NTA10: xor dx,dx
div bx
call HexDigit
push dx
inc si
loop NTA10
NTA20: inc cx
or ax,ax
jnz NTA10
mov cx,si
jcxz NTA40
cld
NTA30: pop ax
stosb
loop NTA30
NTA40: mov [byte di],0
pop si
pop di
pop dx
ret
ENDP NumToAscii
;*****************************************************************************
PROC HexDigit
cmp dl,10
jb HD10
add dl,"A"-10
ret
HD10: or dl,"0"
ret
ENDP HexDigit
;*****************************************************************************
PROC StrWrite
push ax
push di
xor al,al
mov cx,0FFFFh
cld
repnz scasb
not cx
dec cx
pop di
pop ax
push ax
push bx
push dx
mov bx,1
mov dx,di
mov ah,40h
int 21h
pop dx
pop bx
pop ax
ret
ENDP StrWrite
;*****************************************************************************
PROC NewLine
mov ah,2
mov dl,13
int 21h
mov di,10
int 21h
ret
ENDP NewLine
;*****************************************************************************
END Start
Download this code: keyboard.asm
Пример программы заменяющей шрифты
%TITLE "Оболочка для com-файлов"
IDEAL
MODEL tiny
;------ Вставте здесь директивы include "filename"
;------ Вставте здесь макроопределеня equ и (=)
txt1len equ font-txt1
DATASEG
;------ Если программа будет прервана по ошибке,то запишите код
; ошибки в exCode и jmp Exit
exCode DB 0
;*************************************************************************
attr DB 15
txt1 DB 0,2,00011111b
DB 0,1,0,0,"-------------------------------------------------------------------------------¬"
DB 0,1,1,0,"¦",0,2,00011101b,0,1,1,25,"Writen by Misha Krivij",0,2,00011111b,0,1,1,79,"¦"
DB 0,1,2,0,"L==============================================================================-"
font db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h; 000
db 000h,000h,07Eh,081h,0A5h,081h,081h,0BDh,099h,081h,081h,07Eh,000h,000h,000h,000h; 001
db 000h,000h,07Eh,0FFh,0DBh,0FFh,0FFh,0C3h,0E7h,0FFh,0FFh,07Eh,000h,000h,000h,000h; 002
db 000h,000h,000h,000h,06Ch,0FEh,0FEh,0FEh,0FEh,07Ch,038h,010h,000h,000h,000h,000h; 003
db 000h,000h,000h,000h,010h,038h,07Ch,0FEh,07Ch,038h,010h,000h,000h,000h,000h,000h; 004
db 000h,000h,000h,018h,03Ch,03Ch,0E7h,0E7h,0E7h,018h,018h,03Ch,000h,000h,000h,000h; 005
db 000h,000h,000h,018h,03Ch,07Eh,0FFh,0FFh,07Eh,018h,018h,03Ch,000h,000h,000h,000h; 006
db 000h,000h,000h,000h,000h,000h,018h,03Ch,03Ch,018h,000h,000h,000h,000h,000h,000h; 007
db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0E7h,0C3h,0C3h,0E7h,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh; 008
db 000h,000h,000h,000h,000h,03Ch,066h,042h,042h,066h,03Ch,000h,000h,000h,000h,000h; 009
db 0FFh,0FFh,0FFh,0FFh,0FFh,0C3h,099h,0BDh,0BDh,099h,0C3h,0FFh,0FFh,0FFh,0FFh,0FFh; 00A
db 000h,000h,01Eh,00Eh,01Ah,032h,078h,0CCh,0CCh,0CCh,0CCh,078h,000h,000h,000h,000h; 00B
db 000h,000h,03Ch,066h,066h,066h,066h,03Ch,018h,07Eh,018h,018h,000h,000h,000h,000h; 00C
db 000h,000h,03Fh,033h,03Fh,030h,030h,030h,030h,070h,0F0h,0E0h,000h,000h,000h,000h; 00D
db 000h,000h,07Fh,063h,07Fh,063h,063h,063h,063h,067h,0E7h,0E6h,0C0h,000h,000h,000h; 00E
db 000h,000h,000h,018h,018h,0DBh,03Ch,0E7h,03Ch,0DBh,018h,018h,000h,000h,000h,000h; 00F
db 000h,080h,0C0h,0E0h,0F0h,0F8h,0FEh,0F8h,0F0h,0E0h,0C0h,080h,000h,000h,000h,000h; 010
db 000h,002h,006h,00Eh,01Eh,03Eh,0FEh,03Eh,01Eh,00Eh,006h,002h,000h,000h,000h,000h; 011
db 000h,000h,018h,03Ch,07Eh,018h,018h,018h,07Eh,03Ch,018h,000h,000h,000h,000h,000h; 012
db 000h,000h,066h,066h,066h,066h,066h,066h,066h,000h,066h,066h,000h,000h,000h,000h; 013
db 000h,000h,07Fh,0DBh,0DBh,0DBh,07Bh,01Bh,01Bh,01Bh,01Bh,01Bh,000h,000h,000h,000h; 014
db 000h,07Ch,0C6h,060h,038h,06Ch,0C6h,0C6h,06Ch,038h,00Ch,0C6h,07Ch,000h,000h,000h; 015
db 000h,000h,000h,000h,000h,000h,000h,000h,0FEh,0FEh,0FEh,0FEh,000h,000h,000h,000h; 016
db 000h,000h,018h,03Ch,07Eh,018h,018h,018h,07Eh,03Ch,018h,07Eh,000h,000h,000h,000h; 017
db 000h,000h,018h,03Ch,07Eh,018h,018h,018h,018h,018h,018h,018h,000h,000h,000h,000h; 018
db 000h,000h,018h,018h,018h,018h,018h,018h,018h,07Eh,03Ch,018h,000h,000h,000h,000h; 019
db 000h,000h,000h,000h,000h,018h,00Ch,0FEh,00Ch,018h,000h,000h,000h,000h,000h,000h; 01A
db 000h,000h,000h,000h,000h,030h,060h,0FEh,060h,030h,000h,000h,000h,000h,000h,000h; 01B
db 000h,000h,000h,000h,000h,000h,0C0h,0C0h,0C0h,0FEh,000h,000h,000h,000h,000h,000h; 01C
db 000h,000h,000h,000h,000h,028h,06Ch,0FEh,06Ch,028h,000h,000h,000h,000h,000h,000h; 01D
db 000h,000h,000h,000h,010h,038h,038h,07Ch,07Ch,0FEh,0FEh,000h,000h,000h,000h,000h; 01E
db 000h,000h,000h,000h,0FEh,0FEh,07Ch,07Ch,038h,038h,010h,000h,000h,000h,000h,000h; 01F
db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h; 020
db 000h,000h,018h,03Ch,03Ch,03Ch,018h,018h,018h,000h,018h,018h,000h,000h,000h,000h; 021
db 000h,066h,066h,066h,024h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h; 022
db 000h,000h,000h,06Ch,06Ch,0FEh,06Ch,06Ch,06Ch,0FEh,06Ch,06Ch,000h,000h,000h,000h; 023
db 018h,018h,07Ch,0C6h,0C2h,0C0h,07Ch,006h,006h,086h,0C6h,07Ch,018h,018h,000h,000h; 024
db 000h,000h,000h,000h,0C2h,0C6h,00Ch,018h,030h,060h,0C6h,086h,000h,000h,000h,000h; 025
db 000h,000h,038h,06Ch,06Ch,038h,076h,0DCh,0CCh,0CCh,0CCh,076h,000h,000h,000h,000h; 026
db 000h,030h,030h,030h,060h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h; 027
db 000h,000h,00Ch,018h,030h,030h,030h,030h,030h,030h,018h,00Ch,000h,000h,000h,000h; 028
db 000h,000h,030h,018h,00Ch,00Ch,00Ch,00Ch,00Ch,00Ch,018h,030h,000h,000h,000h,000h; 029
db 000h,000h,000h,000h,000h,066h,03Ch,0FFh,03Ch,066h,000h,000h,000h,000h,000h,000h; 02A
db 000h,000h,000h,000h,000h,018h,018h,07Eh,018h,018h,000h,000h,000h,000h,000h,000h; 02B
db 000h,000h,000h,000h,000h,000h,000h,000h,000h,018h,018h,018h,030h,000h,000h,000h; 02C
db 000h,000h,000h,000h,000h,000h,000h,0FEh,000h,000h,000h,000h,000h,000h,000h,000h; 02D
db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,018h,018h,000h,000h,000h,000h; 02E
db 000h,000h,000h,000h,002h,006h,00Ch,018h,030h,060h,0C0h,080h,000h,000h,000h,000h; 02F
db 000h,000h,07Ch,0C6h,0C6h,0CEh,0D6h,0E6h,0C6h,0C6h,0C6h,07Ch,000h,000h,000h,000h; 030
db 000h,000h,018h,038h,078h,018h,018h,018h,018h,018h,018h,07Eh,000h,000h,000h,000h; 031
db 000h,000h,07Ch,0C6h,006h,00Ch,018h,030h,060h,0C0h,0C6h,0FEh,000h,000h,000h,000h; 032
db 000h,000h,07Ch,0C6h,006h,006h,03Ch,006h,006h,006h,0C6h,07Ch,000h,000h,000h,000h; 033
db 000h,000h,00Ch,01Ch,03Ch,06Ch,0CCh,0FEh,00Ch,00Ch,00Ch,01Eh,000h,000h,000h,000h; 034
db 000h,000h,0FEh,0C0h,0C0h,0C0h,0FCh,006h,006h,006h,0C6h,07Ch,000h,000h,000h,000h; 035
db 000h,000h,038h,060h,0C0h,0C0h,0FCh,0C6h,0C6h,0C6h,0C6h,07Ch,000h,000h,000h,000h; 036
db 000h,000h,0FEh,0C6h,006h,006h,00Ch,018h,030h,030h,030h,030h,000h,000h,000h,000h; 037
db 000h,000h,07Ch,0C6h,0C6h,0C6h,07Ch,0C6h,0C6h,0C6h,0C6h,07Ch,000h,000h,000h,000h; 038
db 000h,000h,07Ch,0C6h,0C6h,0C6h,07Eh,006h,006h,006h,00Ch,078h,000h,000h,000h,000h; 039
db 000h,000h,000h,000h,018h,018h,000h,000h,000h,018h,018h,000h,000h,000h,000h,000h; 03A
db 000h,000h,000h,000h,018h,018h,000h,000h,000h,018h,018h,030h,000h,000h,000h,000h; 03B
db 000h,000h,000h,006h,00Ch,018h,030h,060h,030h,018h,00Ch,006h,000h,000h,000h,000h; 03C
db 000h,000h,000h,000h,000h,07Eh,000h,000h,07Eh,000h,000h,000h,000h,000h,000h,000h; 03D
db 000h,000h,000h,060h,030h,018h,00Ch,006h,00Ch,018h,030h,060h,000h,000h,000h,000h; 03E
db 000h,000h,07Ch,0C6h,0C6h,00Ch,018h,018h,018h,000h,018h,018h,000h,000h,000h,000h; 03F
db 000h,000h,000h,07Ch,0C6h,0C6h,0DEh,0DEh,0DEh,0DCh,0C0h,07Ch,000h,000h,000h,000h; 040
db 000h,000h,010h,038h,06Ch,0C6h,0C6h,0FEh,0C6h,0C6h,0C6h,0C6h,000h,000h,000h,000h; 041
db 000h,000h,0FCh,066h,066h,066h,07Ch,066h,066h,066h,066h,0FCh,000h,000h,000h,000h; 042
db 000h,000h,03Ch,066h,0C2h,0C0h,0C0h,0C0h,0C0h,0C2h,066h,03Ch,000h,000h,000h,000h; 043
db 000h,000h,0F8h,06Ch,066h,066h,066h,066h,066h,066h,06Ch,0F8h,000h,000h,000h,000h; 044
db 000h,000h,0FEh,066h,062h,068h,078h,068h,060h,062h,066h,0FEh,000h,000h,000h,000h; 045
db 000h,000h,0FEh,066h,062h,068h,078h,068h,060h,060h,060h,0F0h,000h,000h,000h,000h; 046
db 000h,000h,03Ch,066h,0C2h,0C0h,0C0h,0DEh,0C6h,0C6h,066h,03Ah,000h,000h,000h,000h; 047
db 000h,000h,0C6h,0C6h,0C6h,0C6h,0FEh,0C6h,0C6h,0C6h,0C6h,0C6h,000h,000h,000h,000h; 048
db 000h,000h,03Ch,018h,018h,018h,018h,018h,018h,018h,018h,03Ch,000h,000h,000h,000h; 049
db 000h,000h,01Eh,00Ch,00Ch,00Ch,00Ch,00Ch,0CCh,0CCh,0CCh,078h,000h,000h,000h,000h; 04A
db 000h,000h,0E6h,066h,066h,06Ch,078h,078h,06Ch,066h,066h,0E6h,000h,000h,000h,000h; 04B
db 000h,000h,0F0h,060h,060h,060h,060h,060h,060h,062h,066h,0FEh,000h,000h,000h,000h; 04C
db 000h,000h,0C6h,0EEh,0FEh,0FEh,0D6h,0C6h,0C6h,0C6h,0C6h,0C6h,000h,000h,000h,000h; 04D
db 000h,000h,0C6h,0E6h,0F6h,0FEh,0DEh,0CEh,0C6h,0C6h,0C6h,0C6h,000h,000h,000h,000h; 04E
db 000h,000h,07Ch,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,07Ch,000h,000h,000h,000h; 04F
db 000h,000h,0FCh,066h,066h,066h,07Ch,060h,060h,060h,060h,0F0h,000h,000h,000h,000h; 050
db 000h,000h,07Ch,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,0D6h,0DEh,07Ch,00Ch,00Eh,000h,000h; 051
db 000h,000h,0FCh,066h,066h,066h,07Ch,06Ch,066h,066h,066h,0E6h,000h,000h,000h,000h; 052
db 000h,000h,07Ch,0C6h,0C6h,060h,038h,00Ch,006h,0C6h,0C6h,07Ch,000h,000h,000h,000h; 053
db 000h,000h,07Eh,07Eh,05Ah,018h,018h,018h,018h,018h,018h,03Ch,000h,000h,000h,000h; 054
db 000h,000h,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,07Ch,000h,000h,000h,000h; 055
db 000h,000h,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,06Ch,038h,010h,000h,000h,000h,000h; 056
db 000h,000h,0C6h,0C6h,0C6h,0C6h,0D6h,0D6h,0D6h,0FEh,0EEh,06Ch,000h,000h,000h,000h; 057
db 000h,000h,0C6h,0C6h,06Ch,07Ch,038h,038h,07Ch,06Ch,0C6h,0C6h,000h,000h,000h,000h; 058
db 000h,000h,066h,066h,066h,066h,03Ch,018h,018h,018h,018h,03Ch,000h,000h,000h,000h; 059
db 000h,000h,0FEh,0C6h,086h,00Ch,018h,030h,060h,0C2h,0C6h,0FEh,000h,000h,000h,000h; 05A
db 000h,000h,03Ch,030h,030h,030h,030h,030h,030h,030h,030h,03Ch,000h,000h,000h,000h; 05B
db 000h,000h,000h,080h,0C0h,0E0h,070h,038h,01Ch,00Eh,006h,002h,000h,000h,000h,000h; 05C
db 000h,000h,03Ch,00Ch,00Ch,00Ch,00Ch,00Ch,00Ch,00Ch,00Ch,03Ch,000h,000h,000h,000h; 05D
db 010h,038h,06Ch,0C6h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h; 05E
db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,0FFh,000h,000h; 05F
db 000h,030h,018h,00Ch,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h; 060
db 000h,000h,000h,000h,000h,078h,00Ch,07Ch,0CCh,0CCh,0CCh,076h,000h,000h,000h,000h; 061
db 000h,000h,0E0h,060h,060h,078h,06Ch,066h,066h,066h,066h,07Ch,000h,000h,000h,000h; 062
db 000h,000h,000h,000h,000h,07Ch,0C6h,0C0h,0C0h,0C0h,0C6h,07Ch,000h,000h,000h,000h; 063
db 000h,000h,01Ch,00Ch,00Ch,03Ch,06Ch,0CCh,0CCh,0CCh,0CCh,076h,000h,000h,000h,000h; 064
db 000h,000h,000h,000h,000h,07Ch,0C6h,0FEh,0C0h,0C0h,0C6h,07Ch,000h,000h,000h,000h; 065
db 000h,000h,01Ch,036h,032h,030h,078h,030h,030h,030h,030h,078h,000h,000h,000h,000h; 066
db 000h,000h,000h,000h,000h,076h,0CCh,0CCh,0CCh,0CCh,0CCh,07Ch,00Ch,0CCh,078h,000h; 067
db 000h,000h,0E0h,060h,060h,06Ch,076h,066h,066h,066h,066h,0E6h,000h,000h,000h,000h; 068
db 000h,000h,018h,018h,000h,038h,018h,018h,018h,018h,018h,03Ch,000h,000h,000h,000h; 069
db 000h,000h,006h,006h,000h,00Eh,006h,006h,006h,006h,006h,006h,066h,066h,03Ch,000h; 06A
db 000h,000h,0E0h,060h,060h,066h,06Ch,078h,078h,06Ch,066h,0E6h,000h,000h,000h,000h; 06B
db 000h,000h,038h,018h,018h,018h,018h,018h,018h,018h,018h,03Ch,000h,000h,000h,000h; 06C
db 000h,000h,000h,000h,000h,0ECh,0FEh,0D6h,0D6h,0D6h,0D6h,0C6h,000h,000h,000h,000h; 06D
db 000h,000h,000h,000h,000h,0DCh,066h,066h,066h,066h,066h,066h,000h,000h,000h,000h; 06E
db 000h,000h,000h,000h,000h,07Ch,0C6h,0C6h,0C6h,0C6h,0C6h,07Ch,000h,000h,000h,000h; 06F
db 000h,000h,000h,000h,000h,0DCh,066h,066h,066h,066h,066h,07Ch,060h,060h,0F0h,000h; 070
db 000h,000h,000h,000h,000h,076h,0CCh,0CCh,0CCh,0CCh,0CCh,07Ch,00Ch,00Ch,01Eh,000h; 071
db 000h,000h,000h,000h,000h,0DCh,076h,066h,060h,060h,060h,0F0h,000h,000h,000h,000h; 072
db 000h,000h,000h,000h,000h,07Ch,0C6h,060h,038h,00Ch,0C6h,07Ch,000h,000h,000h,000h; 073
db 000h,000h,010h,030h,030h,0FCh,030h,030h,030h,030h,036h,01Ch,000h,000h,000h,000h; 074
db 000h,000h,000h,000h,000h,0CCh,0CCh,0CCh,0CCh,0CCh,0CCh,076h,000h,000h,000h,000h; 075
db 000h,000h,000h,000h,000h,0C6h,0C6h,0C6h,0C6h,0C6h,06Ch,038h,000h,000h,000h,000h; 076
db 000h,000h,000h,000h,000h,0C6h,0C6h,0D6h,0D6h,0D6h,0FEh,06Ch,000h,000h,000h,000h; 077
db 000h,000h,000h,000h,000h,0C6h,06Ch,038h,038h,038h,06Ch,0C6h,000h,000h,000h,000h; 078
db 000h,000h,000h,000h,000h,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,07Eh,006h,00Ch,0F8h,000h; 079
db 000h,000h,000h,000h,000h,0FEh,0CCh,018h,030h,060h,0C6h,0FEh,000h,000h,000h,000h; 07A
db 000h,000h,00Eh,018h,018h,018h,070h,018h,018h,018h,018h,00Eh,000h,000h,000h,000h; 07B
db 000h,000h,018h,018h,018h,018h,018h,018h,018h,018h,018h,018h,000h,000h,000h,000h; 07C
db 000h,000h,070h,018h,018h,018h,00Eh,018h,018h,018h,018h,070h,000h,000h,000h,000h; 07D
db 000h,076h,0DCh,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h; 07E
db 000h,000h,000h,000h,010h,038h,06Ch,0C6h,0C6h,0C6h,0FEh,000h,000h,000h,000h,000h; 07F
db 000h,000h,01Eh,036h,066h,0C6h,0C6h,0FEh,0C6h,0C6h,0C6h,0C6h,000h,000h,000h,000h; 080
db 000h,000h,0FEh,062h,060h,060h,07Ch,066h,066h,066h,066h,0FCh,000h,000h,000h,000h; 081
db 000h,000h,0FCh,066h,066h,066h,07Ch,066h,066h,066h,066h,0FCh,000h,000h,000h,000h; 082
db 000h,000h,0FEh,066h,062h,060h,060h,060h,060h,060h,060h,0F0h,000h,000h,000h,000h; 083
db 000h,000h,01Eh,036h,066h,066h,066h,066h,066h,066h,066h,0FFh,0C3h,081h,000h,000h; 084
db 000h,000h,0FEh,066h,062h,068h,078h,068h,060h,062h,066h,0FEh,000h,000h,000h,000h; 085
db 000h,000h,0DBh,0DBh,05Ah,05Ah,07Eh,07Eh,05Ah,0DBh,0DBh,0DBh,000h,000h,000h,000h; 086
db 000h,000h,07Ch,0C6h,006h,006h,03Ch,006h,006h,006h,0C6h,07Ch,000h,000h,000h,000h; 087
db 000h,000h,0C6h,0C6h,0C6h,0CEh,0DEh,0F6h,0E6h,0C6h,0C6h,0C6h,000h,000h,000h,000h; 088
db 06Ch,038h,0C6h,0C6h,0C6h,0CEh,0DEh,0F6h,0E6h,0C6h,0C6h,0C6h,000h,000h,000h,000h; 089
db 000h,000h,0E6h,066h,06Ch,06Ch,078h,078h,06Ch,06Ch,066h,0E6h,000h,000h,000h,000h; 08A
db 000h,000h,01Fh,036h,066h,066h,066h,066h,066h,066h,066h,0CFh,000h,000h,000h,000h; 08B
db 000h,000h,0C6h,0EEh,0FEh,0FEh,0D6h,0C6h,0C6h,0C6h,0C6h,0C6h,000h,000h,000h,000h; 08C
db 000h,000h,0C6h,0C6h,0C6h,0C6h,0FEh,0C6h,0C6h,0C6h,0C6h,0C6h,000h,000h,000h,000h; 08D
db 000h,000h,07Ch,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,07Ch,000h,000h,000h,000h; 08E
db 000h,000h,0FEh,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,000h,000h,000h,000h; 08F
db 000h,000h,0FCh,066h,066h,066h,066h,07Ch,060h,060h,060h,0F0h,000h,000h,000h,000h; 090
db 000h,000h,07Ch,0C6h,0C6h,0C0h,0C0h,0C0h,0C0h,0C2h,0C6h,07Ch,000h,000h,000h,000h; 091
db 000h,000h,0FFh,0DBh,099h,018h,018h,018h,018h,018h,018h,03Ch,000h,000h,000h,000h; 092
db 000h,000h,0C6h,0C6h,0C6h,0C6h,0C6h,07Eh,006h,006h,0C6h,07Ch,000h,000h,000h,000h; 093
db 000h,000h,07Eh,0DBh,0DBh,0DBh,0DBh,0DBh,0DBh,07Eh,018h,03Ch,000h,000h,000h,000h; 094
db 000h,000h,0C6h,0C6h,06Ch,07Ch,038h,038h,07Ch,06Ch,0C6h,0C6h,000h,000h,000h,000h; 095
db 000h,000h,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,0FFh,003h,003h,000h,000h; 096
db 000h,000h,0C6h,0C6h,0C6h,0C6h,0C6h,07Eh,006h,006h,006h,006h,000h,000h,000h,000h; 097
db 000h,000h,0D6h,0D6h,0D6h,0D6h,0D6h,0D6h,0D6h,0D6h,0D6h,0FEh,000h,000h,000h,000h; 098
db 000h,000h,0D6h,0D6h,0D6h,0D6h,0D6h,0D6h,0D6h,0D6h,0D6h,0FFh,003h,003h,000h,000h; 099
db 000h,000h,0F8h,0F0h,0B0h,030h,03Eh,033h,033h,033h,033h,07Eh,000h,000h,000h,000h; 09A
db 000h,000h,0C3h,0C3h,0C3h,0C3h,0F3h,0DBh,0DBh,0DBh,0DBh,0F3h,000h,000h,000h,000h; 09B
db 000h,000h,0F0h,060h,060h,060h,07Ch,066h,066h,066h,066h,0FCh,000h,000h,000h,000h; 09C
db 000h,000h,07Ch,0C6h,006h,026h,03Eh,026h,006h,006h,0C6h,07Ch,000h,000h,000h,000h; 09D
db 000h,000h,0CEh,0DBh,0DBh,0DBh,0FBh,0DBh,0DBh,0DBh,0DBh,0CEh,000h,000h,000h,000h; 09E
db 000h,000h,03Fh,066h,066h,066h,03Eh,03Eh,066h,066h,066h,0E7h,000h,000h,000h,000h; 09F
db 000h,000h,000h,000h,000h,078h,00Ch,07Ch,0CCh,0CCh,0CCh,076h,000h,000h,000h,000h; 0A0
db 000h,002h,006h,07Ch,0C0h,0C0h,0FCh,0C6h,0C6h,0C6h,0C6h,07Ch,000h,000h,000h,000h; 0A1
db 000h,000h,000h,000h,000h,0FCh,066h,066h,07Ch,066h,066h,0FCh,000h,000h,000h,000h; 0A2
db 000h,000h,000h,000h,000h,0FEh,062h,062h,060h,060h,060h,0F0h,000h,000h,000h,000h; 0A3
db 000h,000h,000h,000h,000h,01Eh,036h,066h,066h,066h,066h,0FFh,0C3h,0C3h,000h,000h; 0A4
db 000h,000h,000h,000h,000h,07Ch,0C6h,0C6h,0FEh,0C0h,0C6h,07Ch,000h,000h,000h,000h; 0A5
db 000h,000h,000h,000h,000h,0D6h,0D6h,054h,07Ch,054h,0D6h,0D6h,000h,000h,000h,000h; 0A6
db 000h,000h,000h,000h,000h,07Ch,0C6h,006h,03Ch,006h,0C6h,07Ch,000h,000h,000h,000h; 0A7
db 000h,000h,000h,000h,000h,0C6h,0C6h,0CEh,0D6h,0E6h,0C6h,0C6h,000h,000h,000h,000h; 0A8
db 000h,000h,000h,06Ch,038h,0C6h,0C6h,0CEh,0D6h,0E6h,0C6h,0C6h,000h,000h,000h,000h; 0A9
db 000h,000h,000h,000h,000h,0E6h,06Ch,078h,078h,06Ch,066h,0E6h,000h,000h,000h,000h; 0AA
db 000h,000h,000h,000h,000h,01Eh,036h,066h,066h,066h,066h,0E6h,000h,000h,000h,000h; 0AB
db 000h,000h,000h,000h,000h,0C6h,0EEh,0FEh,0FEh,0D6h,0D6h,0C6h,000h,000h,000h,000h; 0AC
db 000h,000h,000h,000h,000h,0C6h,0C6h,0C6h,0FEh,0C6h,0C6h,0C6h,000h,000h,000h,000h; 0AD
db 000h,000h,000h,000h,000h,07Ch,0C6h,0C6h,0C6h,0C6h,0C6h,07Ch,000h,000h,000h,000h; 0AE
db 000h,000h,000h,000h,000h,0FEh,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,000h,000h,000h,000h; 0AF
db 011h,044h,011h,044h,011h,044h,011h,044h,011h,044h,011h,044h,011h,044h,011h,044h; 0B0
db 055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh; 0B1
db 0DDh,077h,0DDh,077h,0DDh,077h,0DDh,077h,0DDh,077h,0DDh,077h,0DDh,077h,0DDh,077h; 0B2
db 00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh; 0B3
db 018h,018h,018h,018h,018h,018h,018h,0F8h,018h,018h,018h,018h,018h,018h,018h,018h; 0B4
db 018h,018h,018h,018h,018h,0F8h,018h,0F8h,018h,018h,018h,018h,018h,018h,018h,018h; 0B5
db 036h,036h,036h,036h,036h,036h,036h,0F6h,036h,036h,036h,036h,036h,036h,036h,036h; 0B6
db 000h,000h,000h,000h,000h,000h,000h,0FEh,036h,036h,036h,036h,036h,036h,036h,036h; 0B7
db 000h,000h,000h,000h,000h,0F8h,018h,0F8h,018h,018h,018h,018h,018h,018h,018h,018h; 0B8
db 036h,036h,036h,036h,036h,0F6h,006h,0F6h,036h,036h,036h,036h,036h,036h,036h,036h; 0B9
db 0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h; 0BA
db 000h,000h,000h,000h,000h,0FEh,006h,0F6h,036h,036h,036h,036h,036h,036h,036h,036h; 0BB
db 036h,036h,036h,036h,036h,0F6h,006h,0FEh,000h,000h,000h,000h,000h,000h,000h,000h; 0BC
db 036h,036h,036h,036h,036h,036h,036h,0FEh,000h,000h,000h,000h,000h,000h,000h,000h; 0BD
db 018h,018h,018h,018h,018h,0F8h,018h,0F8h,000h,000h,000h,000h,000h,000h,000h,000h; 0BE
db 0FFh,0FFh,003h,0FBh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh; 0BF
db 0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0DFh,0C0h,0FFh,0FFh; 0C0
db 018h,018h,018h,018h,018h,018h,018h,0FFh,000h,000h,000h,000h,000h,000h,000h,000h; 0C1
db 000h,000h,000h,000h,000h,000h,000h,0FFh,018h,018h,018h,018h,018h,018h,018h,018h; 0C2
db 018h,018h,018h,018h,018h,018h,018h,01Fh,018h,018h,018h,018h,018h,018h,018h,018h; 0C3
db 0FFh,0FFh,000h,0FFh,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h; 0C4
db 018h,018h,018h,018h,018h,018h,018h,0FFh,018h,018h,018h,018h,018h,018h,018h,018h; 0C5
db 018h,018h,018h,018h,018h,01Fh,018h,01Fh,018h,018h,018h,018h,018h,018h,018h,018h; 0C6
db 036h,036h,036h,036h,036h,036h,036h,037h,036h,036h,036h,036h,036h,036h,036h,036h; 0C7
db 036h,036h,036h,036h,036h,037h,030h,03Fh,000h,000h,000h,000h,000h,000h,000h,000h; 0C8
db 000h,000h,000h,000h,000h,03Fh,030h,037h,036h,036h,036h,036h,036h,036h,036h,036h; 0C9
db 036h,036h,036h,036h,036h,0F7h,000h,0FFh,000h,000h,000h,000h,000h,000h,000h,000h; 0CA
db 000h,000h,000h,000h,000h,0FFh,000h,0F7h,036h,036h,036h,036h,036h,036h,036h,036h; 0CB
db 036h,036h,036h,036h,036h,037h,030h,037h,036h,036h,036h,036h,036h,036h,036h,036h; 0CC
db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,0FFh,000h,0FFh,0FFh; 0CD
db 036h,036h,036h,036h,036h,0F7h,000h,0F7h,036h,036h,036h,036h,036h,036h,036h,036h; 0CE
db 018h,018h,018h,018h,018h,0FFh,000h,0FFh,000h,000h,000h,000h,000h,000h,000h,000h; 0CF
db 036h,036h,036h,036h,036h,036h,036h,0FFh,000h,000h,000h,000h,000h,000h,000h,000h; 0D0
db 000h,000h,000h,000h,000h,0FFh,000h,0FFh,018h,018h,018h,018h,018h,018h,018h,018h; 0D1
db 000h,000h,000h,000h,000h,000h,000h,0FFh,036h,036h,036h,036h,036h,036h,036h,036h; 0D2
db 036h,036h,036h,036h,036h,036h,036h,03Fh,000h,000h,000h,000h,000h,000h,000h,000h; 0D3
db 018h,018h,018h,018h,018h,01Fh,018h,01Fh,000h,000h,000h,000h,000h,000h,000h,000h; 0D4
db 000h,000h,000h,000h,000h,01Fh,018h,01Fh,018h,018h,018h,018h,018h,018h,018h,018h; 0D5
db 000h,000h,000h,000h,000h,000h,000h,03Fh,036h,036h,036h,036h,036h,036h,036h,036h; 0D6
db 036h,036h,036h,036h,036h,036h,036h,0FFh,036h,036h,036h,036h,036h,036h,036h,036h; 0D7
db 018h,018h,018h,018h,018h,0FFh,018h,0FFh,018h,018h,018h,018h,018h,018h,018h,018h; 0D8
db 00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,00Bh,0FBh,003h,0FFh,0FFh; 0D9
db 0FFh,0FFh,0C0h,0DFh,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h,0D0h; 0DA
db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh; 0DB
db 000h,000h,000h,000h,000h,000h,000h,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh; 0DC
db 0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h; 0DD
db 00Fh,00Fh,00Fh,00Fh,00Fh,00Fh,00Fh,00Fh,00Fh,00Fh,00Fh,00Fh,00Fh,00Fh,00Fh,00Fh; 0DE
db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,000h,000h,000h,000h,000h,000h,000h,000h,000h; 0DF
db 000h,000h,000h,000h,000h,0DCh,066h,066h,066h,066h,066h,07Ch,060h,060h,0F0h,000h; 0E0
db 000h,000h,000h,000h,000h,07Ch,0C6h,0C0h,0C0h,0C0h,0C6h,07Ch,000h,000h,000h,000h; 0E1
db 000h,000h,000h,000h,000h,07Eh,05Ah,018h,018h,018h,018h,03Ch,000h,000h,000h,000h; 0E2
db 000h,000h,000h,000h,000h,0C6h,0C6h,0C6h,0C6h,0C6h,07Eh,006h,006h,0C6h,07Ch,000h; 0E3
db 000h,000h,000h,03Ch,018h,07Eh,0DBh,0DBh,0DBh,0DBh,0DBh,07Eh,018h,018h,03Ch,000h; 0E4
db 000h,000h,000h,000h,000h,0C6h,06Ch,038h,038h,038h,06Ch,0C6h,000h,000h,000h,000h; 0E5
db 000h,000h,000h,000h,000h,0C6h,0C6h,0C6h,0C6h,0C6h,0C6h,0FFh,003h,003h,000h,000h; 0E6
db 000h,000h,000h,000h,000h,0C6h,0C6h,0C6h,0C6h,07Eh,006h,006h,000h,000h,000h,000h; 0E7
db 000h,000h,000h,000h,000h,0D6h,0D6h,0D6h,0D6h,0D6h,0D6h,0FEh,000h,000h,000h,000h; 0E8
db 000h,000h,000h,000h,000h,0D6h,0D6h,0D6h,0D6h,0D6h,0D6h,0FEh,003h,003h,000h,000h; 0E9
db 000h,000h,000h,000h,000h,0F8h,0B0h,0B0h,03Eh,033h,033h,07Eh,000h,000h,000h,000h; 0EA
db 000h,000h,000h,000h,000h,0C6h,0C6h,0C6h,0F6h,0DEh,0DEh,0F6h,000h,000h,000h,000h; 0EB
db 000h,000h,000h,000h,000h,0F0h,060h,060h,07Ch,066h,066h,0FCh,000h,000h,000h,000h; 0EC
db 000h,000h,000h,000h,000h,07Ch,0C6h,006h,03Eh,006h,0C6h,07Ch,000h,000h,000h,000h; 0ED
db 000h,000h,000h,000h,000h,0CEh,0DBh,0DBh,0FBh,0DBh,0DBh,0CEh,000h,000h,000h,000h; 0EE
db 000h,000h,000h,000h,000h,07Fh,0C6h,0C6h,07Eh,036h,066h,0E7h,000h,000h,000h,000h; 0EF
db 06Ch,000h,0FEh,066h,062h,068h,078h,068h,060h,062h,066h,0FEh,000h,000h,000h,000h; 0F0
db 000h,000h,000h,06Ch,000h,07Ch,0C6h,0C6h,0FCh,0C0h,0C6h,07Ch,000h,000h,000h,000h; 0F1
db 000h,000h,07Ch,0C6h,0C0h,0C8h,0F8h,0C8h,0C0h,0C0h,0C6h,07Ch,000h,000h,000h,000h; 0F2
db 000h,000h,000h,000h,000h,07Ch,0C6h,0C0h,0F8h,0C0h,0C6h,07Ch,000h,000h,000h,000h; 0F3
db 066h,000h,03Ch,018h,018h,018h,018h,018h,018h,018h,018h,03Ch,000h,000h,000h,000h; 0F4
db 000h,000h,000h,06Ch,000h,038h,018h,018h,018h,018h,018h,03Ch,000h,000h,000h,000h; 0F5
db 06Ch,038h,0C6h,0C6h,0C6h,0C6h,0C6h,07Eh,006h,006h,0C6h,07Ch,000h,000h,000h,000h; 0F6
db 000h,000h,000h,06Ch,038h,0C6h,0C6h,0C6h,0C6h,0C6h,07Eh,006h,006h,0C6h,07Ch,000h; 0F7
db 000h,038h,06Ch,06Ch,038h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h; 0F8
db 000h,000h,000h,000h,000h,000h,000h,018h,018h,000h,000h,000h,000h,000h,000h,000h; 0F9
db 000h,000h,000h,000h,000h,000h,000h,018h,000h,000h,000h,000h,000h,000h,000h,000h; 0FA
db 000h,00Eh,00Ch,00Ch,00Ch,00Ch,00Ch,00Ch,0ECh,06Ch,03Ch,01Ch,000h,000h,000h,000h; 0FB
db 000h,000h,0CFh,0CDh,0EFh,0ECh,0FFh,0DCh,0DCh,0CCh,0CCh,0CCh,000h,000h,000h,000h; 0FC
db 000h,000h,000h,0C6h,07Ch,0C6h,0C6h,0C6h,0C6h,0C6h,07Ch,0C6h,000h,000h,000h,000h; 0FD
db 000h,000h,000h,000h,07Eh,07Eh,07Eh,07Eh,07Eh,07Eh,07Eh,000h,000h,000h,000h,000h; 0FE
db 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h; 0FF
;*************************************************************************
;------ Здесь опишите другие переменные с помощью DB,DW и т.п.
Ukaz dw Font,0000
BytesPerRowa=80*2
rowa=0
LABEL ScRow Word
REPT 25
DW (rowa*BytesPerRowa)
rowa=rowa+1
ENDM
CODESEG
ORG 100h ;Стандартный адресс начала com-программы.
Start:
; AH=11h,
; AL=00h-знакогенератор пользователя (текст),
; ES:BP=указатель на таблицу,
; CX=число символов,
; DX=смещение в таблице,
; BL=блок (0-3),
; BH=число байтов на символ.
mov si,offset Ukaz+2
mov [ds:si],ds
push ds
pop es
mov bp,[Ukaz]
mov bl,0
mov bh,16
mov dx,0
mov cx,256
mov al,00h
mov ah,11h
int 10h
mov cx,txt1len
mov si,offset txt1
call PrnLine
Exit: mov ah,04Ch
mov al,[exCode]
int 21h
PROC SetVidAddr ;подготовить адресс видеопамяти.
xor bh,bh
mov bl,dh
shl bx,1
mov di,[ScRow+bx]
xor dh,dh
shl dx,1
add di,dx
ret
ENDP SetVidAddr
PROC PrnLine ;Вывод строки
push es ;cx - длина
mov ax,0B800h ;ds:si - адресс строки
mov es,ax
mov ah,[attr]
cld
@@PrnLine1: lodsb
cmp al,0
je @@Code0
stosw
loop @@PrnLine1
pop es
ret
@@Code0: lodsb
dec cx
cmp al,1
je @@Coord
cmp al,2
je @@NewAttr
mov [exCode],1
jmp Exit
@@Coord: lodsb
mov dh,al
lodsb
mov dl,al
call SetVidAddr
sub cx,3
jmp @@PrnLine1
@@NewAttr: lodsb
mov [attr],al
mov ah,al
sub cx,2
jmp @@PrnLine1
ENDP PrnLine
END Start
;11h Загрузка знакогенератора
; AH=11h,
; AL=00h-знакогенератор пользователя (текст),
; ES:BP=указатель на таблицу,
; CX=число символов,
; DX=смещение в таблице,
; BL=блок (0-3),
; BH=число байтов на символ.
; AL=01h-знакогенератор ROM 8х14 (моно),
; BL=блок (0-3).
; AL=02h-знакогенератор ROM 8х8 двойной (текст),
; BL=блок (0-3).
; AL=03h-установка определенного блока (текст),
; BL= разряды 3 2 1 0
; LT- LT-
; ¦ L- когда сброшен бит_3 атрибута,
; L-- когда установлен бит_3 аттрибута
; AL=10h-знакогенератор пользователя (текст),
; ES:BP=указатель на таблицу,
; CX=число символов,
; DX=смещение в таблице,
; BL=блок (0-3),
; BH=число байтов на символ.
; AL=11h-знакогенератор 8х14 (моно),
; BL=блок (0-3).
; AL=12h-знакогенератор 8х8 двойной (текст),
; BL=блок (0-3).
; AL=20h-знакогенератор пользователя 8х8 (граф),
; ES:BP=указатель на таблицу для символов
; 128-255 (INT 1Fh для режимов < 7).
; AL=21h-знакогенератор пользователя (граф),
; ES:BP=указатель на таблицу символов
; 0-255 (INT 43h для режимов > 7).
; CX=число байт на символ,
; BL=индекс:
; 00-DL=число строк,
; 01-14 строк,
; 02-25 строк,
; 03-43 строки.
; AL=22h-знакогенератор 8х8 (граф),
; BL=индекс.
; AL=23h-знакогенератор 8х8 двойной (граф),
; BL=индекс.
; AL=30h-возвращает информацию о знакогенераторе,
; BH=индекс указателя:
; 0-текущий для INT 1Fh,
; 1-текущий для INT 43h,
; 2-ROM 8x14,
; 3-ROM 8x8 двойной,
; 5-ROM 9x14 альтернативный.
; Возвращает:
; ES:BP=указатель,
; CX=число линий на символ,
; DL=число линий.
; Функции 10h, 11h и 12h перепрограммируют регистры
; видео-контроллера и поэтому должны следовать за
; установкой режима.
Download this code: font.asm
Комментарии