На выходе: AH = число символов в строке;
AL = номер текущего режима;
BH = номер активной страницы видеопамяти.
___________________________________________________
Пример 2. Программа выводит на экран синусоиду в режиме 13h.
; Рисуем синусоиду в графическом режиме 13h
; также рисуем координатные оси
; синус определяем как sin(z)=((2*tan(z))/(1+tan(z)*tan(z)))
masm
model small
.stack 100h
.data
B Dd 0
Y dd ?
X dw ?
B1 dd 0
D1 dd 2.0
MASSHTAB dd 10.0
saveMode db ? ; Сохранить текущий видео режим
currentX dw 100 ; координата X
currentY dw 0 ; координата Y
color db 1 ; номер цвета
step dd 0.1
.code
start:
mov ax,@data
mov ds,ax
; Получаем и сохраняем текущий видеорежим
mov ah,0Fh
int 10h
mov saveMode,al
; Переключиться в графический режим
mov ah,0h
mov al,13h
int 10h
finit
FLD B1
mov cx,220; ; счетчик цикла
L1:
FPTAN
FLD ST(1)
FLD ST(0)
FMUL
FADD
FLD ST(0)
FLD ST(2)
FLD D1
FMUL
FLD ST(1)
FDIV
FLD MASSHTAB
FMUL
FLD ST(0)
FRNDINT
fist Y
mov ax,word ptr[Y]
mov bx,100
sub bx,ax
mov dx,bx ; в dx записываем точку Y
push cx
mov ah,0Ch ; рисование точки
mov al,color ; цвет точки
mov bh,0 ; видео страница
mov cx,currentX ; в cx записываем точку X
int 10h
inc currentX
inc color ; используйте для разноцветной линии
pop cx
finit
fld B
FLD step
fadd
fst B
loop L1
;Рисуем координатную ось OX
mov cx,320
L2:
mov dx,100 ; в dx записываем точку Y
push cx
mov ah,0Ch ; рисование точки
mov al,3 ; цвет точки
mov bh,0 ; видео страница
mov cx,currentX ; в cx записываем точку X
int 10h
inc currentX
pop cx
loop L2
;--------------------------------------------------------
;Рисуем координатную ось OY
mov cx,200
L3:
push cx
mov cx,100 ; в cx записываем точку X
mov ah,0Ch ; рисование точки
mov al,3 ; цвет точки
mov bh,0 ; видео страница
mov dx,currentY ; в dx записываем точку Y
int 10h
inc currentY
pop cx
loop L3
;--------------------------------------------------------
; Ожидаем нажатия клавиши
mov ah,0
int 16h
; Возврат в прежний видеорежим
mov ah,0 ; установить видео режим
mov al,saveMode ; сохраненный видео режим
int 10h
exit: ;выход
mov ax,4c00h ;стандартное завершение программы
int 21h
end start
_________________________________________________
Пример:Написать программу вывода на экран монитора четырех смежных квадратов в шахматном порядке: два синих два желтых.
masm
model small
.stack 100h
.data
.code
start: ;точка входа
mov ax,@data
mov ds,ax
mov ax,0002h ;установка видеорежима с номером в AL
int 10h ;прерывание BIOS
mov ax,0600h ;прокрутка вверх (AL=0 - заполняет экран
;пробелами)
mov bh,01100000b ;устанавливает цвет фона(желтый) и
;символа
mov cx,0000h ;координаты верхнего левого угла
;(строка, столбец)
mov dx,0306h ;координаты нижнего правого угла
int 10h
mov bh,00010000b ;синий
mov cx,0007h
mov dx,030Dh
int 10h
mov cx,0400h
mov dx,0706h
int 10h
mov bh,01100000b ;желтый
mov cx,0407h
mov dx,070Dh
int 10h
mov ax,4c00h ;стандартное завершение программы
int 21h
end start