我在寫一個引導加載程序和我下面教程工作提供此代碼:與建立分部困惑寄存器
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寄存器的功能?另外,是由BIOS自動設置的cs段嗎?因爲它說代碼位於0000:7c00。另外,本教程永遠不會解釋爲什麼中斷被禁用。我在某處讀到中斷通常是禁用的,以避免死鎖。這是什麼意思,爲什麼會發生?
只是一個觀察:你的代碼只能在386和更高的處理器上工作。 8086/8088/80286沒有'FS'和'GS'段寄存器。這可能是由設計,但我只是想指出。 –