- -----------------------------------------------------------------------
- INT 0x10可识别的视频图形模式
- --------------------------------------------------------------------
- 模式 分辨率(列*行,像素) 颜色数
- 6 640x200 2
- 0DH 320x200 16
- 0EH 640x350 16
- 0FH 640x350 2
- 10H 640x200 16
- 11H 640x480 2
- 12H 640x480 16
- 13H 320x200 256
- 6AH 800x600 16
- -----------------------------------------------------------------------
- INT 0x10 功能0CH
- ---------------------------------------------------------------
- 描述:
- 写像素
- 接受参数:
- AH 0CH
- AL 像素值
- BH 视频页
- CX X坐标
- DX Y坐标
- 返回值:
- 无
- 注意:
- 视频显示必须处于图形模式下。像素值的范围和坐标范围与当前的图形模式有关。
- 如果AL的位7置位,新的像素同当前像素的内容进行异或运算
AH=0CH
AH=0Ch/INT 10H 是在绘图模式中显示一点 ( 也就是写入点像,write graphics pixel ),而 AH=0DH/INT 10H 则是读取点像 ( read graphics pixel )。
写入时,要写入位置 X 座标存于 CX 寄存器,Y 座标存于 DX 寄存器,颜色存于 AL 寄存器。和文字模式相同,萤光幕上的 Y 座标是最上面一列为零,越下面越大,X 座标则和数学的定义相同。CX、DX、AL 值之范围与显示模式有关:
显示模式 | X 座标 | Y 座标 | 颜色 |
4 | 0~319 | 0~199 | 0、1 |
5 | 0~319 | 0~199 | 0~3 |
6 | 0~639 | 0~199 | 0、1 |
AH=0DH/INT 10H 则是读取某一位置之点像,您必须指定 CX、DX,而 INT 10H 会传回该位置点像之颜色。
org 07c00h
mov ax,cxmov ds,ax
mov es,ax
call clear_screen
mov ah,0;
mov al,06ah ;设置图形模式 0x6a 位800 600 16中颜色
int 10h
;画 一条直线
mov bh,0x0 ;视频页
mov dx,300 ;y坐标
mov cx,100 ;x坐标
mov ah,0x0c ;功能号
mov al,9 ;像素值 像素颜色
lib:
int 10h
inc cx
cmp cx,700
jne lib
jmp $
clear_screen:
mov ah,0x06
mov al,0
mov cx, 0x00
mov dh,24
mov dl,40
mov bh,0x07
int 10h
ret
BootMessage: db "He"
times 510-($-$$) db 0 ;填充剩下的空间,使生成的二进制代码恰好为512字节
dw 0xaa55