一些简单的nasm问题,我无法理解%n和选择器

时间:2013-06-16 07:59:48

标签: assembly nasm

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是什么意思和结构?

1 个答案:

答案 0 :(得分:1)

  

无法理解代码中%的含义

NASM manual答案就是那个:

  

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

因此,例如,%macro告诉预处理器您正在启动宏定义。


  

SelectorVideo和SelectorCode32是什么意思和结构?

SelectorCode32 equ LABEL_DESC_CODE32 - LABEL_GDT只是创建一个等号(有点像常量)并给它一个等于从LABEL_GDTLABEL_DESC_CODE32的距离的值。