我正在從“從 0 到 1 的作業系統”一書中做一些作業系統教程。練習之一是在引導加載程式中將游標設定到螢屏上的某個位置。但是,無論我嘗試什么,游標都只會停留在左上角的相同位置。
為了讓事情更加混亂,書中提到我需要在引發中斷 10h 之前設定的暫存器bh用于 Y 坐標和blX 坐標。維基百科提到bh了頁碼,dh以及dl行和列。這些方法都不適合我。
這是我正在使用的函式(使用 book 方法):
MovCursor:
pusha
mov ah, 0x02
mov bh, 0x1
mov bl, 0x4
int 0x10
popa
任何告訴我我做錯了什么的幫助將不勝感激。
uj5u.com熱心網友回復:
維基百科注冊設定是正確的。從你說“這些方法都不適合我”,我得出結論你也嘗試過維基百科版本。遺憾的是我無法驗證您的代碼,因為您沒有將其包含在您的問題中。
關于游標需要考慮的幾點:
- 在圖形螢屏上,永遠不會呈現游標。坐標發生變化,但它保持不可見1。在文本螢屏上,游標默認為閃爍的下劃線。
- 游標的坐標(列和行)從零開始。螢屏的左上角在 (0,0) 處。
- 如果將游標置于螢屏外,游標將消失。
- 您可以使用 BIOS.SetCursorType 函式 01h 更改游標的形狀。你也可以用這種方式讓它消失!
下一個代碼在螢屏中間顯示一串彩色 A:
mov ax, 0003h ; BIOS.SetVideoMode 80x25 16-color text
int 10h
mov dx, 0C23h ; DH is Row (12), DL is Column (35)
mov bh, 0 ; DisplayPage
mov ah, 02h ; BIOS.SetCursorPosition
int 10h
mov cx, 10 ; ReplicationCount
mov bx, 002Fh ; BH is DisplayPage (0) , BL is Attribute (BrightWhiteOnGreen)
mov ax, 0941h ; BIOS.WriteCharacterAndAttribute, AL is ASCII ("A")
int 10h
mov ah, 00h ; BIOS.WaitKeyboardKey
int 16h ; -> AX
1對于一些輕松閱讀 如何向圖形視頻模式添加閃爍的游標?
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/345695.html
上一篇:在mongodb聚合中使用$match后如何包含空陣列
下一篇:docker基本使用總結
