我不明白這一段代碼:堆棧段
mov ax, 07C0h ; Set up 4K of stack space above buffer
add ax, 544 ; 8k buffer = 512 paragraphs + 32 paragraphs (loader)
cli ; Disable interrupts while changing stack
mov ss, ax
mov sp, 4096
sti ; Restore interrupts
- MOV AX,07C0h - 在這裏BIOS加載我們 代碼。但什麼是'4K'?千字節?我 沒有得到它:)
- 加斧,544 - 爲什麼再次'8K'?爲什麼我們添加544?爲什麼不是512?
- mov sp,4096 - 這裏我們設置堆棧指針。
在我們設置堆棧指針之前,我們做了所有這些操作?
你有源代碼的其餘部分嗎? – 2010-07-12 19:33:07
是的。它可以在這裏http://mikeos.berlios.de/#downloads或我在這裏分享http://snipt.org/Tmon – 2010-07-12 19:48:08
輕微切線:我可能是錯誤的,我沒有英特爾手冊方便檢查,但我認爲'CLI'和'STI'說明在這裏是不必要的。 IIRC,保證如果移動到'SS'之後立即移動到'SP',那麼在兩個移動指令之間不會發生中斷。 – bcat 2010-07-12 20:14:32