level 6
下面就ReactOS中相关的gas汇编intel语法格式做一个总结
内存有效地址
intel格式
section:[base+index*scale+displacement]
section:段前缀
base:基址寄存器
index:变址寄存器
scale:可以取值1,2,4,8。如果不指定scale 值,则默认值为1
displacement:偏移量
宏定义
gas中的宏定义和c语言中的宏定义相同如(可能又叫符号常量吧):
#define KPCR_IRQL 0x24
#define PCR ds:[0xFFDFF000]
mov ecx, PCR[KPCR_IRQL] // 这种表达有点类似结构变量的访问
// 经过宏代换后
mov ecx, ds:[0xFFDFF000+0x24]
变量定义
汇编语言中可以给存储单元取符号名,也可以不取符号名。当给存储单元取符号名时,则可通过该符号名来访问其对应的存储单元;当不给存储单元取符号名时,则可通过存储单元的偏移量(有效地址)来访问它。
[变量名:] 数据类型符 表达式1[, 表达式2, …, 表达式n] //注释
如:
PICInitTable: .short 0x20
.byte 0x11
第一个可以用地址来访问,后面的一个可以用PICInitTable+2访问
2009年04月09日 05点04分