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软中断显示字符串相关推荐

  1. 自制操作系统学习笔记(2)-汇编程序体验

    Netwide Assembler https://www.nasm.us/ ;learn2-osDB 0xeb,0x4e,0x90DB " lxaipro";启动区名称DW 51 ...

  2. 自制操作系统学习笔记(1)-虚拟机启动软盘

    visualbox新建其它虚拟电脑,启动顺序选择软驱. 安装UltraEdit

  3. 《30天自制操作系统》笔记(01)——hello bitzhuwei’s OS!

    <30天自制操作系统>笔记(01)--hello bitzhuwei's OS! 最初的OS代码 1 ; hello-os 2 ; TAB=4 3 4 ORG 0x7c00 ; 指明程序的 ...

  4. 《30天自制操作系统》笔记(04)——显示器256色

    <30天自制操作系统>笔记(04)--显示器256色 进度回顾 从最开始的(01)篇到上一篇为止,已经解决了开发环境问题和OS项目的顶层设计问题. 本篇做一个小练习:设置显卡显示256色. ...

  5. Linux操作系统学习笔记【入门必备】

    Linux操作系统学习笔记[入门必备] 文章目录 Linux操作系统学习笔记[入门必备] 1.Linux入门 2.Linux目录结构 3.远程登录 3.1 远程登录Linux-Xshell5 3.2 ...

  6. 《30天自制操作系统》笔记(09)——绘制窗口

    <30天自制操作系统>笔记(09)--绘制窗口 进度回顾 上一篇中介绍了图层式窗口管理的思路和算法.在此基础上,本篇就解决绘制窗口及其简单的优化问题. 这里稍微吐槽一下<30天自制操 ...

  7. 操作系统学习笔记-2.1.5线程概念和多线程模型

    操作系统学习笔记-2019 王道考研 操作系统-2.1.5线程概念和多线程模型 文章目录 5线程概念和多线程模型 5.1知识概览 5.2 什么是线程?为什么要引入线程? 5.3引入线程及之后,有什么变 ...

  8. 操作系统学习笔记-2.1.4进程通信

    操作系统学习笔记-2019 王道考研 操作系统-2.1.4进程通信 文章目录 4进程通信 4.1知识总览 4.2前置知识:什么是进程通信? 4.3共享存储 4.4 管道通信 4.5消息传递 4.6小结 ...

  9. 操作系统学习笔记-2.1.3进程控制

    操作系统学习笔记-2019 王道考研 操作系统-2.1.3进程控制 文章目录 3.进程控制 3.1知识概览 3.2 基本概念 3.2.1什么是进程控制? 3.2.2如何实现进程控制? 3.3进程控制相 ...

最新文章

  1. VC++实现QQ聊天工具【源代码】
  2. Python的os.walk()方法详细讲解
  3. nmap在kali的使用方法和常见命令(入门)
  4. emplace_back和push_back区别
  5. html5(八) IndexedDB
  6. python图片转视频加特效_使用Python opencv实现视频与图片的相互转换
  7. ASP分页要用到的属性ADO CursorLocation知识补充:
  8. iChart--组件定制
  9. 计算机专业窗体的事件何时触发,高三计算机专业VB试题(六)1
  10. 微信公众号网页开发步骤
  11. 一、绘制不同类别特征均值标准差直方图
  12. treefrog之视图 ERB
  13. imagemagick 图片合并
  14. photoshop中的快速选择工具
  15. axure产品原型设计工具
  16. TP-LINK telnet远程 重启路由器(转)
  17. 贾扬清:把生命浪费在有意思的事情上
  18. netstat命令不可用,安装net-tools
  19. 亚马逊ec2 删除实例_学习使用Amazon EC2实例部署php应用程序
  20. 计算机图形学【GAMES-101】6、阴影映射(Shadow Mapping)

热门文章

  1. Prim算法的3个版本
  2. [Struts]Token 使用及原理
  3. HTML5 使用 JS 生成二维码,带头像
  4. Mysql数据字典导出
  5. Linux - 操作系统查找文件的过程以及硬链接与软链接的区别
  6. NCspider项目总结
  7. 九度oj 1006 ZOJ问题 2010年浙江大学计算机及软件工程研究生机试真题
  8. 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞
  9. delphi webbrowser 经常用法演示样例
  10. [libjingle学习笔记]编译注意事项