如果您想用 c 编写自己的操作系统,请在 YouTube 上查找 Pritam Zope。他很聪明,有很多关于用 c 和 asm 编写自己的内核和引导加载程序的视频。我也有兴趣编写自己的操作系统,我做了一些研究并决定最好在 asm 中工作。如果您对使用 asm 而不是 c 感兴趣,还可以查看 theMike97。这是我在 asm 中编写的一个简单的引导加载程序,包含您感兴趣的内容。它只是打印你好世界。
org 0x7c00
mov si, message ;The message location *you can change this*
call print ;CALL tells the pc to jump back here when done
jmp $
print:
mov ah, 0Eh ;Set function
.run:
lodsb ;Get the char
; cmp al, 0x00 ;I would use this but ya know u dont so use:
cmp al, 0 ;0 has a HEX code of 0x48 so its not 0x00
je .done ;Jump to done if ending code is found
int 10h ;Else print
jmp .run ; and jump back to .run
.done:
ret ;Return
message db 'Hello, world', 0 ;IF you use 0x00
;message db 'Hello, world', 0x00
times 510-($-$$) db 0
dw 0xaa55
~
将此代码保存在名为 main.asm 的文件中 编译它并nasm -fbin main.asm -o main.bin
运行它qemu-system-x86_64 main.bin