日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

自制操作系统学习笔记(3)-INT 0x10软中断显示字符串

發布時間:2025/3/12 windows 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 自制操作系统学习笔记(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软中断显示字符串的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。