我正在研究(慢慢)x86程序集,我想知道的一件事是:
我是否可以创建一个16字节整数的可变数据类型?
或者我只能访问db(8位),dw(2个字节)和dd(4个字节)?
答案 0 :(得分:1)
这取决于您使用的汇编程序。例如,MASM还支持DF
(6个字节),DQ
(8个字节)和DT
(10个字节)。
对于较大的变量,请创建数组或结构(例如sixteen_bytes: DQ 2 DUP(0)
)。
在MASM中使用struct / union的示例:
LARGE_INT STRUCT
UNION
STRUCT
LowPart dd ?
HighPart dd ?
ENDS
QuadPart dq ?
ENDS
LARGE_INT ENDS
然后,您可以使用:
创建LARGE_INT
的实例
foo LARGE_INT <>
并使用它:
fistp qword ptr foo.QuadPart ; write to all 64 bits of foo
mov eax, foo.LowPart ; read from the lower 32 bits of foo
; ..and so on..