蜂鸣器Bootloader(Intel x86)

时间:2016-10-22 15:19:06

标签: assembly boot bootloader bios

我终于明白了汇编和裸机编程的基础知识。或者至少这是我的想法。我写了这个(我自己第一次:))

[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执行了它的测试,并启动到我的引导程序(或者更确切地说#34;程序"因为它实际上并没有启动)。它没有打印出来,我的电脑开始发出哔哔声。

我已经禁用启动扇区病毒保护,快速启动,我确实尝试了所有内容,但每次我启动到我的东西时它只是在我脸上发出哔哔声直到我按CTRL + ALT +删除它。

我做错了什么?提前谢谢。

1 个答案:

答案 0 :(得分:2)

在审核了评论之后,我的电脑没有发出哔哔声的工作代码,而是打印出我正在寻找的字符串:

org 7c00h
bits 16
main:
xor ax, ax
mov ds, ax
mov es, ax         
mov ss, ax
mov sp, 7c00h      
cld                
xor bx, bx        
mov si, MESAJ      
call yaz
cli
durdur:
hlt
jmp durdur
yaz:
push ax
mov  ah, 0Eh       
yenikarakter:
lodsb                                
test al, al
je   bitir         
int  10h           
jmp  yenikarakter     
bitir:
pop ax
ret
MESAJ:
db "Test basarili!", 10, 13, 0
times 510-($-$$) db 00h
dw 0xAA55