nasm BIOS绘制直线
2015-11-21 20:21
204 查看
-----------------------------------------------------------------------
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 |
org 07c00h
mov ax,cx
mov 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
相关文章推荐
- 更新Xamarin.Forms至2.0版本
- windows 下 cmd(dos) 编码方式
- python 正则表达式
- Redis 学习笔记2-redis数据类型
- C++虚表的实现原理(windows & linux上)
- Hanoi
- HDU-1428(记忆化搜索)
- 2 jquery选择器
- How get a String Width in Libgdx?
- 《算法竞赛入门经典2ndEdition 》竖式问题(Page41)
- 基于ARP和WinPcap的网络嗅探
- xargs 与 tr, sort uniq
- 从svn上回滚版本和解决冲突
- Chapter 6: The Memory Hierarchy
- java 多线程同步
- CashCard expired and cannot be used
- Ubuntu 14.04.3安装64位JDK1.7
- 私人Java最佳实践
- 我的Windows Live Writer插件
- leveldb代码结构