Assembly 一些简单的nasm问题,我可以';无法理解%n和选择器
一, 我无法理解代码中%的含义 二, SelectorVideo和SelectorCode32的含义和结构是什么 无法理解代码中%的含义 答案是: 预处理器指令都以%符号开头 例如,Assembly 一些简单的nasm问题,我可以';无法理解%n和选择器,assembly,nasm,Assembly,Nasm,一, 我无法理解代码中%的含义 二, SelectorVideo和SelectorCode32的含义和结构是什么 无法理解代码中%的含义 答案是: 预处理器指令都以%符号开头 例如,%macro告诉预处理器您正在启动宏定义 SelectorVideo和SelectorCode32的含义和结构是什么 SelectorCode32 eq LABEL\u DESC\u CODE32-LABEL\u GDT只需创建一个equale(有点像常数),并给它一个值,该值等于从LABEL\u GDT到LABE
%macro
告诉预处理器您正在启动宏定义
SelectorVideo和SelectorCode32的含义和结构是什么
SelectorCode32 eq LABEL\u DESC\u CODE32-LABEL\u GDT
只需创建一个equale(有点像常数),并给它一个值,该值等于从LABEL\u GDT
到LABEL\u DESC\u CODE32的距离,但是,“LABEL\u GDT到LABEL\u DESC\u CODE32的距离”是多少?你能说得详细一点吗?我所说的“距离”是指两个标签地址之间的差异。你确定这就是差异吗,,SelectorCode32和SelectorVideo只是数字?标签只是一种命名地址的便捷方式,地址就是数字。在NASM代码中,必须使用方括号([]
)取消对地址处数据的引用。但是,如果您想验证这一点,您可以通过打印SelectorVideo
和SelectorCode32
的值来进行验证。谢谢您,Michael,您能看一下“commet”吗
%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 字节
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