2.4 清屏
目录
- 清屏
- 需要的工具
- BIOS中断清屏
- 实现
清屏
需要的工具
qemu: qemu
BIOS中断清屏
清屏是通过BIOS中断,来滚动屏幕,达到清屏的效果。
1. BIOS中断滚屏
中断 int 10h,AH = 06H / 07H
| 寄存器 | 说明 | 值 |
|---|---|---|
| AH | 功能编码 | 向上滚屏:06H,向下滚屏 : 07H |
| BH | 空白区域的缺省属性 | |
| AL | 滚动行数 | 0:清窗口 |
| CH、CL | 滚动区域左上角位置:Y坐标,X坐标 | |
| DH、DL | 滚动区域右下角位置:Y坐标,X坐标 |
例如:使用蓝底白字清屏
Clear_Screen: ;清除屏幕 mov ah,0x06 mov al,0mov cx,0 mov df,0xffff mov bh,0x17 ;属性为蓝底白字int 0x10 2. BIOS中断设置光标位置:
中断 int 10h
功能描述:用文本坐标下设置光标位置
入口参数:
| 寄存器 | 说明 | 值 |
|---|---|---|
| AH | 功能编码 | 设置光标位置:02H |
| BH | 显示页码 | |
| DH,DL | 行,列 (Y坐标,X坐标) |
例如:设置光标到第一行第一列
Init_Cusor: ; 光标位置初始化mov ah,0x02 mov bh,0mov dx,0int 0x10 实现
1. 代码
boot.asm内容如下
;ratsos
[bits 16]org 0x7c00 ;指明程序的偏移的基地址jmp Entry ;跳转到程序入口db 0x90db "RATSBOOT" ;----------------------------
;程序入口
Entry:Clear_Screen: ;清除屏幕 mov ah,0x06 mov bh,0x07 mov al,0mov cx,0 mov dx,0xffff mov bh,0x17 ;属性为蓝底白字int 0x10Clear_Cursor: ; 光标位置初始化mov ah,0x02 mov bh,0mov dx,0int 0x10Fin:hltjmp Fin ;进入死循环,不再往下执行。Fill_Sector:resb 510-($-$$) ;处理当前行$至结束(1FE)的填充db 0x55, 0xaa 编译成ratsos.ima镜像文件。
创建run.sh脚本
#!/bin/bashNASM=nasm
QEMU=qemu-system-x86_64$NASM -f bin -o ratsos.ima boot/boot.asm
$QEMU -m 128 -rtc base=localtime -fda ratsos.ima 运行
结果如图

代码地址
https://github.com/sxt102400/ratsos/tree/master/chapter2.4
转载于:https://www.cnblogs.com/mlzrq/p/10223028.html
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
