私は、ブートローダーについて研究するために、壊れたとげのあるオペレーティング開発シリーズをフォローしています。このページでは、次の3行のコードがあります。
bits 16 ; We are still in 16 bit Real Mode
org 0x7c00 ; We are loaded by BIOS at 0x7C00
start: jmp loader ; jump over OEM block
2行目では、彼はフロッピーで7c00にBIOSをロードしました。なぜ0000にしないのですか?フロッピーイメージのブートローダーをどこに保存するかを確認しました。。ここでも同じことが言えます。しかし、その理由は説明されていません。誰かが私にこれを説明できますか?前もって感謝します。
編集:後のチュートリアルの同じサイトでコードが次のようになっているため、混乱しています:
bits 16 ; we are in 16 bit real mode
org 0 ; we will set regisers later
start: jmp main ; jump to start of bootloader
そしてメインで
main:
;----------------------------------------------------
; code located at 0000:7C00, adjust segment registers
;----------------------------------------------------
cli ; disable interrupts
mov ax, 0x07C0 ; setup registers to point to our segment
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
ここで、なぜ彼はorg 0を使用したのですか?そして、なぜ彼はそのアドレスをすべてのレジスタにコピーしたのでしょうか。これがばかげた質問ならごめんなさい。私はアセンブリプログラミングに非常に慣れておらず、ブートローダーについて読み始めたばかりです。