当前位置: 技术问答>linux和unix
GDT问题
来源: 互联网 发布时间:2016-01-20
本文导语: 《自己动手写操作系统》的开始部分 pmtest1.asm ; 编译方式:nasm pmtest1.asm -o pmtest1.com %include "pm.inc" ; 常量、宏,以及一些说明 org 0100h ...
《自己动手写操作系统》的开始部分
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]; 这个代码段
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]; 这个代码段
|
我觉得就是这样
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。