自制操作系统学习笔记(3)-INT 0x10软中断显示字符串
Makefile:
syslearn: learn.nas Makefilenasm learn.nas -o syslearn.img
clean:del *.img
描述:
以电传打字机的方式显示字符串
接受参数:
AH 0x13
AL 显示模式
BH 视频页
BL 属性值(如果AL=0x00或0x01)
CX 字符串的长度
DH,DL 屏幕上显示起始位置的行、列值
ES:BP 字符串的段:偏移地址
返回值:
无
显示模式(AL):
0x00:字符串只包含字符码,显示之后不更新光标位置,属性值在BL中
0x01:字符串只包含字符码,显示之后更新光标位置,属性值在BL中
0x02:字符串包含字符码及属性值,显示之后不更新光标位置
0x03:字符串包含字符码及属性值,显示之后更新光标位置
INT 0x10功能0x09
描述:
显示字符并设置其属性
接受参数:
AH 0x09
AL 字符的ASCII码
BH 视频页
BL 属性值
CX 重复次数
返回值:
无
注意:
在显示字符之后并不前进光标。在文本和图形模式下均可调用该功能
显示完字符后,如果还要继续显示字符,必须调用INT 0x10功能0x02前进光标
;learn2-os
;启动区部分ORG 0x7c00 ;启动区装载地址JMP entry DB 0x90DB " lxaipro";启动区名称DW 512;每个扇区大小DB 1;簇的大小DW 1;FAT的起始位置(从第一个扇区开始)DB 2;FAT个数(2)DW 224;根目录大小DW 2880;该磁盘大小。2880扇区DB 0xf0;磁盘的种类DW 9;FAT长度,9扇区DW 18;1个磁道有几个扇区DW 2;磁头数(必须是2)DD 0;不使用分区,必须是0DD 2880;重写一次磁盘大小DB 0,0,0x29;扩展引导标记 固定0x29DD 0xffffffff ;卷列序号 DB "lxaipro-os ";磁盘名称(11个字节)DB "FAT12 ";磁盘格式名(8个字节) TIMES 18 DB 0; 先空出18字节
;程序主体entry:MOV AX,0 ; 寄存器初始化MOV SS,AXMOV SP,0x7c00MOV DS,AXMOV ES,AXMOV SI,msg
;显示字符
showchar:MOV AL,[SI]ADD SI,1 ; SI自增1,调出下一个字符CMP AL,0 ;如果当前为0,表示字符串结尾,退出循环JE fin ;退出循环,字符串取完字符MOV AH,0x0e ; MOV BX,15 ; 颜色INT 0x10 ; 调入软中断,BIOS显示功能JMP showcharfin:HLT ; CPU待机JMP fin ;信息显示部分
msg:DB 0x0a, 0x0a,0x0a,0x0a ; 4个换行符DB "hi"DB 0x0a ;换行DB "mypro3"DB 0x0a, 0x0a;2个换行符DB 0TIMES 0x7dfe-($-$$) DB 0 ; 0X00直到0x001feDB 0x55, 0xaa
INT 0x10功能0x02
描述:
把光标定位在选定视频页的特定行列位置
接受参数:
AH 0x02
DH,DL 行、列值
BH 视频页
返回值:
无
注意:
在80x25模式下,DH范围0~24,DL范围0~79
7 6 5 4 3 2 1 0
I R G B I R G B
闪烁 R G B I R G B
如上图所示,7~4位为背景色,I表示高亮,RGB表示红绿蓝,若显卡支持闪烁,则位7表示是否闪烁。
色彩混合:
混合的三种基色 不开启亮度位 开启亮度位
红+绿+蓝 浅灰 白色
绿+蓝 青色 浅青
红+蓝 洋红 浅洋红
红+绿 棕色 黄色
无色彩 黑色 暗灰
;learn2-os
;启动区部分ORG 0x7c00 ;启动区装载地址JMP entry DB 0x90DB " lxaipro";启动区名称DW 512;每个扇区大小DB 1;簇的大小DW 1;FAT的起始位置(从第一个扇区开始)DB 2;FAT个数(2)DW 224;根目录大小DW 2880;该磁盘大小。2880扇区DB 0xf0;磁盘的种类DW 9;FAT长度,9扇区DW 18;1个磁道有几个扇区DW 2;磁头数(必须是2)DD 0;不使用分区,必须是0DD 2880;重写一次磁盘大小DB 0,0,0x29;扩展引导标记 固定0x29DD 0xffffffff ;卷列序号 DB "lxaipro-os ";磁盘名称(11个字节)DB "FAT12 ";磁盘格式名(8个字节) TIMES 18 DB 0; 先空出18字节
;程序主体entry:MOV AX,0 ; 寄存器初始化MOV SS,AXMOV SP,0x7c00MOV DS,AXMOV ES,AXMOV SI,msg
;显示字符MOV DH,0x04MOV DL,0x06
showchar:MOV AL,[SI]ADD SI,1 ; SI自增1,调出下一个字符CMP AL,0 ;如果当前为0,表示字符串结尾,退出循环JE fin ;退出循环,字符串取完字符MOV AH,0x09 ; MOV BX,14 ; 颜色MOV CX,1INT 0x10 ; 调入软中断,BIOS显示功能ADD DL,1MOV AH,0x02 ;调用INT 0x10功能0x02前进光标 INT 0x10 ; 调入软中断,BIOS显示功能JMP showcharfin:HLT ; CPU待机JMP fin ;信息显示部分
msg:DB "hi"DB "-" DB "mypro3"DB ">";DB 0TIMES 0x7dfe-($-$$) DB 0 ; 0X00直到0x001feDB 0x55, 0xaa
自制操作系统学习笔记(3)-INT 0x10软中断显示字符串相关推荐
- 自制操作系统学习笔记(2)-汇编程序体验
Netwide Assembler https://www.nasm.us/ ;learn2-osDB 0xeb,0x4e,0x90DB " lxaipro";启动区名称DW 51 ...
- 自制操作系统学习笔记(1)-虚拟机启动软盘
visualbox新建其它虚拟电脑,启动顺序选择软驱. 安装UltraEdit
- 《30天自制操作系统》笔记(01)——hello bitzhuwei’s OS!
<30天自制操作系统>笔记(01)--hello bitzhuwei's OS! 最初的OS代码 1 ; hello-os 2 ; TAB=4 3 4 ORG 0x7c00 ; 指明程序的 ...
- 《30天自制操作系统》笔记(04)——显示器256色
<30天自制操作系统>笔记(04)--显示器256色 进度回顾 从最开始的(01)篇到上一篇为止,已经解决了开发环境问题和OS项目的顶层设计问题. 本篇做一个小练习:设置显卡显示256色. ...
- Linux操作系统学习笔记【入门必备】
Linux操作系统学习笔记[入门必备] 文章目录 Linux操作系统学习笔记[入门必备] 1.Linux入门 2.Linux目录结构 3.远程登录 3.1 远程登录Linux-Xshell5 3.2 ...
- 《30天自制操作系统》笔记(09)——绘制窗口
<30天自制操作系统>笔记(09)--绘制窗口 进度回顾 上一篇中介绍了图层式窗口管理的思路和算法.在此基础上,本篇就解决绘制窗口及其简单的优化问题. 这里稍微吐槽一下<30天自制操 ...
- 操作系统学习笔记-2.1.5线程概念和多线程模型
操作系统学习笔记-2019 王道考研 操作系统-2.1.5线程概念和多线程模型 文章目录 5线程概念和多线程模型 5.1知识概览 5.2 什么是线程?为什么要引入线程? 5.3引入线程及之后,有什么变 ...
- 操作系统学习笔记-2.1.4进程通信
操作系统学习笔记-2019 王道考研 操作系统-2.1.4进程通信 文章目录 4进程通信 4.1知识总览 4.2前置知识:什么是进程通信? 4.3共享存储 4.4 管道通信 4.5消息传递 4.6小结 ...
- 操作系统学习笔记-2.1.3进程控制
操作系统学习笔记-2019 王道考研 操作系统-2.1.3进程控制 文章目录 3.进程控制 3.1知识概览 3.2 基本概念 3.2.1什么是进程控制? 3.2.2如何实现进程控制? 3.3进程控制相 ...
最新文章
- VC++实现QQ聊天工具【源代码】
- Python的os.walk()方法详细讲解
- nmap在kali的使用方法和常见命令(入门)
- emplace_back和push_back区别
- html5(八) IndexedDB
- python图片转视频加特效_使用Python opencv实现视频与图片的相互转换
- ASP分页要用到的属性ADO CursorLocation知识补充:
- iChart--组件定制
- 计算机专业窗体的事件何时触发,高三计算机专业VB试题(六)1
- 微信公众号网页开发步骤
- 一、绘制不同类别特征均值标准差直方图
- treefrog之视图 ERB
- imagemagick 图片合并
- photoshop中的快速选择工具
- axure产品原型设计工具
- TP-LINK telnet远程 重启路由器(转)
- 贾扬清:把生命浪费在有意思的事情上
- netstat命令不可用,安装net-tools
- 亚马逊ec2 删除实例_学习使用Amazon EC2实例部署php应用程序
- 计算机图形学【GAMES-101】6、阴影映射(Shadow Mapping)