我终于明白了汇编和裸机编程的基础知识。或者至少这是我的想法。我写了这个(我自己第一次:))
[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 +删除它。
我做错了什么?提前谢谢。
答案 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