2
我終於明白了彙編和裸機編程的基礎知識。或者至少這是我的想法。我寫這個(自己的第一次:))蜂鳴器引導程序(Intel x86)
[BITS 16]
[ORG 0X7C00]
Yaz: MOV SI, Msa
MOV AL, [SI]
INC SI
INT 0x10
OR AL, AL
JZ Yaz
JMP Halt
Halt: hlt
Msa db "Test Successful", 0
TIMES 510 - ($ - $$) DB 0
DW 0xAA55
我燒入USB這(我深知這些測試在真實的硬件是不是一個好主意),並重新啓動。 BIOS執行它的測試,並引導到我的引導程序(或「程序」,因爲它實際上並沒有啓動)。它沒有打印出任何東西,我的電腦開始發出嗶嗶聲。
我已經禁用啓動扇區病毒防護,快速啓動,我從字面上嘗試了一切,但每次啓動到我的東西時,它只是在我的臉上發出嗶嗶聲,直到我按CTRL + ALT + DELETE出它。
我做錯了什麼?提前致謝。
可能想嘗試這樣的:HTTP://www.capp-sysware .com/misc/stackoverflow/40143596/boot.asm。但我懷疑,因爲你沒有設置DS(將其設置爲零),這可能是一個問題(從錯誤的段讀取字符串),並且不會以無限循環結束。想想你必須在'Halt:hlt'之後移動'JMP Halt'。既然你沒有一個適當的無限循環,它可能會運行'hlt'後發生在內存中的任何事情。 –
這可能有助於指定您的主板,因爲嗶聲代碼通常具有製造商特定的含義,可以幫助調試。 – Aurora0001
此外,我實際上沒有看到您設置了打印的_AH_(Int 10h的子功能)。我想你想把0eh註冊到_AH_來使用[BIOS TTY輸出](http://www.ctyme.com/intr/rb-0106.htm)。你應該在打印之前檢查NUL(0)終止符,而不是之後。 –