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是什么意思和结构?
答案 0 :(得分:1)
无法理解代码中%的含义
NASM manual答案就是那个:
预处理程序指令都以%符号开头。
因此,例如,%macro
告诉预处理器您正在启动宏定义。
SelectorVideo和SelectorCode32是什么意思和结构?
SelectorCode32 equ LABEL_DESC_CODE32 - LABEL_GDT
只是创建一个等号(有点像常量)并给它一个等于从LABEL_GDT
到LABEL_DESC_CODE32
的距离的值。