是否可以在Assembly中创建可变数据类型?

时间:2013-10-16 14:59:34

标签: assembly

我正在研究(慢慢)x86程序集,我想知道的一件事是:

我是否可以创建一个16字节整数的可变数据类型?

或者我只能访问db(8位),dw(2个字节)和dd(4个字节)?

1 个答案:

答案 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..