現在、特定のコードを理解しようとしています。私はここで見つける:開始ラベルの下
http://mikeos.sourceforge.net/write-your-own-os.htmlブートローダースタックを設定
具体的に最初の2行:
BITS 16
start:
mov ax, 07C0h ; Set up 4K stack space after this bootloader
add ax, 288 ; (4096 + 512)/16 bytes per paragraph
mov ss, ax
mov sp, 4096
mov ax, 07C0h ; Set data segment to where we're loaded
mov ds, ax
mov si, text_string ; Put string position into SI
call print_string ; Call our string-printing routine
jmp $ ; Jump here - infinite loop!
text_string db 'This is my cool new OS!', 0
print_string: ; Routine: output string in SI to screen
mov ah, 0Eh ; int 10h 'print char' function
.repeat:
lodsb ; Get character from string
cmp al, 0
je .done ; If char is zero, end of string
int 10h ; Otherwise, print it
jmp .repeat
.done:
ret
times 510-($-$$) db 0 ; Pad remainder of boot sector with 0s
dw 0xAA55 ; The standard PC boot signature
のチュートリアルでは、「それらのラインが私たちのために本当に興味のあるではありません」と言うが、私は本当にたい知っている。だから "07C0h"とは何ですか?最初は、BIOSがブートローダーをロードするアドレスだと思っていましたが、私が読み込んだアドレスからは "7C00h"です。そして、これは "(4096 + 512)/段落ごとの16バイト"という意味ですか?私は "$$"が何であるか知りたい(私は "$"が何であるか知っている)。