2

1.

%macro Descriptor 3
dw  %2 & 0FFFFh             
dw  %1 & 0FFFFh             
db  (%1 >> 16) & 0FFh           
dw  ((%2 >> 8) & 0F00h) | (%3 & 0F0FFh) 
db  (%1 >> 24) & 0FFh           
%endmacro ; 共 8 字节

我无法理解代码中 % 的含义

2.

DA_32       EQU 4000h
DA_C        EQU 98h
DA_DRW      EQU 92h

[SECTION .gdt]
LABEL_GDT:         Descriptor       0,                0, 0          
LABEL_DESC_CODE32: Descriptor       0, SegCode32Len - 1, DA_C + DA_32
LABEL_DESC_VIDEO:  Descriptor 0B8000h,           0ffffh, DA_DRW     


SelectorCode32      equ LABEL_DESC_CODE32   - LABEL_GDT
SelectorVideo       equ LABEL_DESC_VIDEO    - LABEL_GDT

SelectorVideo 和 SelectorCode32 的含义和结构是什么?

4

1 回答 1

1

无法理解代码中 % 的含义

NASM 手册的答案是这样的:

预处理器指令都以 % 符号开头。

因此,例如,%macro告诉预处理器您正在开始一个宏定义。


SelectorVideo 和 SelectorCode32 的含义和结构是什么?

SelectorCode32 equ LABEL_DESC_CODE32 - LABEL_GDT简单地创建一个等式(有点像一个常数)并给它一个等于从LABEL_GDT到的距离的值LABEL_DESC_CODE32

于 2013-06-16T10:45:36.023 回答