私はブートローダーの作成に取り組んでおり、私がフォローしているチュートリアルはこのコードを提供します:
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
;----------------------------------------------------
; create stack
;----------------------------------------------------
mov ax, 0x0000 ; set the stack
mov ss, ax
mov sp, 0xFFFF
sti ; restore interrupts
何か誤解しているかもしれませんが、SS レジスタに 0x0000 が含まれているということは、ds、es、fs、および gs がスタックにオーバーラップするということではないでしょうか? また、fs および gs レジスタの機能は何ですか? また、cs セグメントは BIOS によって自動的に設定されますか? コードが 0000:7c00 にあると言われているためです。また、チュートリアルでは、割り込みが無効になっている理由については説明していません。デッドロックを回避するために通常は割り込みが無効になっていることをどこかで読みました。これは何を意味し、なぜそれが起こるのですか?