我可以制作结构数组 public 吗?

Can I make array of structure public?

我可以创建结构数组 public,以便我可以在其他 .asm 文件中创建函数访问它并修改它。

.data

NODE STRUCT
key dword ?
value dword ?
ends

THREE 10 DUP (0,0) NODE

并且在另一个 .asm 文件中有一个函数可以访问数组 (THREE[0].KEY) 并修改它。

我试过了,但我遇到了另一个函数的障碍,不知道 NODE 是什么。而且我似乎找不到如何制作 NODE typedef STRUCT。

您可以使用 PUBLIC 指令使符号 THREE 可从其他 .ASM 文件访问。您还需要正确定义三个:

    .data

NODE STRUCT
    key dword ?
    value dword ?
NODE ENDS

    PUBLIC THREE
THREE NODE 10 DUP ({0,0})

要访问符号三,您需要使用 EXTERN 指令:

NODE STRUCT
    key dword ?
    value dword ?
NODE ENDS

    EXTERN THREE:NODE

    .code
    mov THREE[0].KEY, 1

请注意,这需要在每个 .ASM 文件中重复两次 NODE 结构定义。为避免这种情况,您可以将其移至单独的文件并将其包含在两个 .ASM 文件中。例如,您可以将以下内容放入名为 node.inc 的文件中:

NODE    STRUCT
    key dword ?
    value   dword ?
NODE    ENDS

并将其包含在我上面的第二个示例的修改版本中,如下所示:

    INCLUDE node.inc

    EXTERN THREE:NODE

    .code
    mov THREE[0].KEY, 1