关闭

nasm BIOS绘制直线

229人阅读 评论(0) 收藏 举报
分类:

 

  1. -----------------------------------------------------------------------  
  2.                         INT 0x10可识别的视频图形模式  
  3. --------------------------------------------------------------------  
  4. 模式          分辨率(列*行,像素)   颜色数  
  5. 6                   640x200                 2  
  6. 0DH                 320x200                 16  
  7. 0EH                 640x350                 16  
  8. 0FH                 640x350                 2  
  9. 10H                 640x200                 16  
  10. 11H                 640x480                 2  
  11. 12H                 640x480                 16  
  12. 13H                 320x200                 256  
  13. 6AH                 800x600                 16  
  14. -----------------------------------------------------------------------

  1.            INT 0x10 功能0CH  
  2. ---------------------------------------------------------------  
  3. 描述:  
  4.     写像素  
  5. 接受参数:  
  6.     AH          0CH  
  7.     AL          像素值  
  8.     BH          视频页  
  9.     CX          X坐标  
  10.     DX          Y坐标  
  11. 返回值:  
  12.     无  
  13. 注意:  
  14.     视频显示必须处于图形模式下。像素值的范围和坐标范围与当前的图形模式有关。  
  15.     如果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,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
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:172623次
    • 积分:4939
    • 等级:
    • 排名:第5960名
    • 原创:251篇
    • 转载:508篇
    • 译文:1篇
    • 评论:72条
    最新评论