GDT问题
《自己动手写操作系统》的开始部分
pmtest1.asm
; 编译方式:nasm pmtest1.asm -o pmtest1.com
%include "pm.inc " ; 常量、宏,以及一些说明
org 0100h
jmp LABEL_BEGIN
[SECTION .gdt]
; GDT
LABEL_GDT: Descriptor 0, 0, 0 ; 空描述符
LABEL_DESC_CODE32: Descriptor 0, SegCode32Len-1, DA_C + DA_32 ; ???
代码段,32位
.......
.......
[SECTION .s32]; 32 位代码段. 由实模式跳入.
[BITS 32]
LABEL_SEG_CODE32:
mov ax, SelectorVideo
mov gs, ax ; 视频段选择子(目的)
mov edi, (80 * 10 + 0) * 2 ; 屏幕第 10 行, 第 0 列。
mov ah, 0Ch ; 0000: 黑底 1100: 红字
mov al, 'P '
mov [gs:edi], ax
; 到此停止
jmp $
SegCode32Len equ $ - LABEL_SEG_CODE32
我想知道一下其中SegCode32Leng-1段限的问题,为什么会是SegCode32Leng-1
是不是仅用它容纳[SECTION .s32]; 这个代码段
------解决方案--------------------我觉得就是这样