nasm BIOS绘制直线

17 篇文章 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
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Farmwang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值