int 10H 显示字符串功能在《自己动手写OS》第五章代码中的分析
来源:互联网 发布:熊猫人之谜音乐知乎 编辑:程序博客网 时间:2024/06/05 20:41
读到《自己动手写OS》第五章,对于多次出现的int 10H 中断做个小小的分析。
对于清屏操作:
功能号:06H和07H
功能:初始化屏幕或滚屏
入口参数:AH=06H—向上滚屏,07H—向下滚屏
AL=滚动行数(0—清窗口)
BH=空白区域的缺省属性
(CH、CL)=窗口的左上角位置(Y坐标,X坐标)
(DH、DL)=窗口的右下角位置(Y坐标,X坐标)
出口参数: 无
这个操作不再赘述。
这里主要讲一下显示字符串的操作中断。
我们先来看一下传参情况:
功能号:13H
功能:在Teletype模式下显示字符串
入口参数:AH=13H
BH=页码
BL=属性(若AL=00H或01H)
CX=显示字符串长度
(DH、DL)=坐标(行、列)
ES:BP=显示字符串的地址 AL= 显示输出方式
0—字符串中只含显示字符,其显示属性在BL中。显示后,光标位置不变
1—字符串中只含显示字符,其显示属性在BL中。显示后,光标位置改变
2—字符串中含显示字符和显示属性。显示后,光标位置不变
3—字符串中含显示字符和显示属性。显示后,光标位置改变
在 Tinix/chapter5/d 中的boot.asm代码中,DispStr 函数如下:
DispStr:
mov ax, MessageLength
mul dh ;注意!dh也是参数,代表字符串的行号
add ax, BootMessage
mov bp, ax ; ┓
mov ax, ds ; ┣ ES:BP = 串地址
mov es, ax ; ┛
mov cx, MessageLength ; CX = 串长度
mov ax, 01301h ; AH = 13, AL = 01h
mov bx, 0007h ; 页号为0(BH = 0) 黑底白字(BL = 07h)
mov dl, 0
int 10h
ret
由红色字段可见字符从dh行dl列开始显示,显示后,光标位置改变(若AL=0,则显示字符后光标停留在原处)。
在 Tinix/chapter5/d 中的loader.asm代码中,DispStrRealMod 函数如下:
mov ax, MessageLength
mul dh
add ax, LoadMessage
mov bp, ax ; ┓
mov ax, ds ; ┣ ES:BP = 串地址
mov es, ax ; ┛
mov cx, MessageLength ; CX = 串长度
mov ax, 01300h ; AH = 13, AL = 01h
mov bx, 0007h ; 页号为0(BH = 0) 黑底白字(BL = 07h)
mov dl, 0
add dh, 3 ; 此处注意!字符串序号+3 为最后的行号
int 10h
ret
因此,若调用函数前dh=0,则在第3行(从第0行开始计数)显示字符串Loading
- int 10H 显示字符串功能在《自己动手写OS》第五章代码中的分析
- INT 10H功能
- int 10h 功能
- 16位汇编 int 10h和int 21h 显示字符串实例
- 《自己动手写操作系统》第五章:扩充内核
- 自己动手写编译器、链接器-第五章
- INT 10H显示字符串的小例子
- 对调用INT 10H中断显示字符串的优化
- 《自己动手写操作系统》多进程代码分析
- INT 10H功能介绍
- INT 10H功能介绍
- 汇编--INT 10H功能
- 汇编--INT 10H功能
- 汇编--INT 10H功能
- 汇编--INT 10H功能
- 汇编 INT 10H功能
- 自己动手写OS(操作系统)
- 自己动手写OS(操作系统)
- Ajax for Web Application Developer译序
- 关于在weblogic和tomcat中实现直接访问servlet的配置说明
- MSDN下自带学习VC例程路径
- 顶峰前的谦让--------转自CJCHT CLARE的NEWS文章
- Quartus警告分析!
- int 10H 显示字符串功能在《自己动手写OS》第五章代码中的分析
- WebSphere应用服务器内存泄漏
- [转] 在linux AS3.0上安装ORACLE9.2.04
- AS3获取Web传递的参数
- 使用正则表达式匹配字符串格式
- 如何在IBM JDK 1.4.2的环境中避免Java堆空间的碎片问题
- 人道 --------转自CJCHT CLARE的NEWS文章
- 诺博NB1200+ 路由器解决网吧ARP病毒
- 解决windows server 2003上不支持.流式flv的问题