我在写一个引导加载程序和我下面教程工作提供此代码:与建立分部困惑寄存器
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'段寄存器。这可能是由设计,但我只是想指出。 –