一段程序,请各位大侠指教,先谢过了
我在看保护模式的汇编程序的时候,有一个地方很迷惑
《80x86汇编语言程序设计教程》 第398页 的一个演示保护模式下的任务变换的程序
大概如下:
GDTSEG SEGMENT PARA USE16 ‘GDT’
GDT LABEL BYTE
DUMMY DESCRIPTOR <>
NORMAL DESCRIPTOR <0FFFFH,0,0,ATDW,0>
NORMAL_SEL = NORMAL - GDT
CODEK DESCRIPTOR <0FFFFH,,,ATCE,>
CODEK_SEL = CODEK - GDT
;局部描述符
LDTABLE DESCRIPTOR <LDTEN-1,,,ATLDT,>
LDT_SEL = LDTABLE-GDT
GDTLEN = $
GDTSEG ENDS
;下面是一个局部描述符表前面的省略
LDTSEG SEGMENT PARA USE16 'LDT'
LDT LABEL BYTE
;省略
LDTLEN=$-LDT #####################
LDTSEG ENDS
;显示信息缓冲区
MDATASEGSEGMENT PARA USE16 ‘MDATA’
MESSAGE DB ‘value = ' ,0
BUFFER DB 80 DUP (0)
MDATALEN = $ ?????????????????????
MDATASEG ENDS
在标有?????的地方,为什么用$ 而不用$-MESSAGE 呢??
在标记的有##############的地方却用了$-LDT
$到底是表示的从一开始到现在的长度还是从该段开始的长度呢???感觉是矛盾的
请版主赐教,谢谢