Assembly 我可以公开结构数组吗?

Assembly 我可以公开结构数组吗?,assembly,masm,masm32,Assembly,Masm,Masm32,我是否可以将结构数组公开,以便使其他.asm文件中的函数能够访问并修改它 .data NODE STRUCT key dword ? value dword ? ends THREE 10 DUP (0,0) NODE 并在另一个.asm文件中创建一个函数,该函数将访问数组(三[0].KEY)并对其进行修改 .data NODE STRUCT key dword ? value dword ? ends THREE 10 DUP (0,0) NODE 我已经尝试过了,但是我遇到了另一

我是否可以将结构数组公开,以便使其他.asm文件中的函数能够访问并修改它

.data

NODE STRUCT
key dword ?
value dword ?
ends

THREE 10 DUP (0,0) NODE
并在另一个.asm文件中创建一个函数,该函数将访问数组(三[0].KEY)并对其进行修改

.data

NODE STRUCT
key dword ?
value dword ?
ends

THREE 10 DUP (0,0) NODE

我已经尝试过了,但是我遇到了另一个函数不知道节点是什么的问题。而且我似乎找不到如何使NODE typedef STRUCT。

您可以使用PUBLIC指令使符号3可以从其他.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文件中重复一次。为了避免这种情况,您可以将其移动到单独的文件中,并同时包含.ASM文件。例如,您可以将以下内容放入名为
node.inc
的文件中:

NODE    STRUCT
    key dword ?
    value   dword ?
NODE    ENDS
并包括上面第二个示例的修改版本,如下所示:

    INCLUDE node.inc

    EXTERN THREE:NODE

    .code
    mov THREE[0].KEY, 1

可以使用PUBLIC指令从其他.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文件中重复一次。为了避免这种情况,您可以将其移动到单独的文件中,并同时包含.ASM文件。例如,您可以将以下内容放入名为
node.inc
的文件中:

NODE    STRUCT
    key dword ?
    value   dword ?
NODE    ENDS
并包括上面第二个示例的修改版本,如下所示:

    INCLUDE node.inc

    EXTERN THREE:NODE

    .code
    mov THREE[0].KEY, 1

可以使用PUBLIC指令从其他.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文件中重复一次。为了避免这种情况,您可以将其移动到单独的文件中,并同时包含.ASM文件。例如,您可以将以下内容放入名为
node.inc
的文件中:

NODE    STRUCT
    key dword ?
    value   dword ?
NODE    ENDS
并包括上面第二个示例的修改版本,如下所示:

    INCLUDE node.inc

    EXTERN THREE:NODE

    .code
    mov THREE[0].KEY, 1

可以使用PUBLIC指令从其他.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文件中重复一次。为了避免这种情况,您可以将其移动到单独的文件中,并同时包含.ASM文件。例如,您可以将以下内容放入名为
node.inc
的文件中:

NODE    STRUCT
    key dword ?
    value   dword ?
NODE    ENDS
并包括上面第二个示例的修改版本,如下所示:

    INCLUDE node.inc

    EXTERN THREE:NODE

    .code
    mov THREE[0].KEY, 1


特别是
公共
外部
指令。特别是
公共
外部
指令。特别是
公共
外部
指令。特别是
公共
外部
指令。即使在我的.inc文件中有externdef,我仍然可以得到主asm文件和函数asm文件的链接错误。Main有未解析的函数,函数有未解析的三个值。我试图创建一个从堆栈接收数据的函数,主要是在用call按下按钮后调用它。在函数asm中,我将其定义为GetVal进程。。GetVal endp。是我的错误吗?听起来你是在单独链接文件,而不是在一起链接。可能您需要做的是类似于
ml main.asm function.asm
。我认为您是对的。但是在我的资料或网上,我找不到如何像c一样链接文件。你能告诉我如何在masm32中搜索链接文件吗?或者如何构建makeit.bat文件?英语不是我的母语,所以可能这就是我错过它的原因。如果像
ml main.asm function.asm
这样的东西不起作用,你应该在命令行或
makeit.bat
文件中发布另一个问题,详细说明你正在运行的命令和收到的错误消息。用实际程序集文件的名称替换
main.asm
function.asm
。即使在my.inc文件中有externdef,我仍然会从main和function asm文件中得到链接错误。Main有未解析的函数,函数有未解析的三个值。我试图创建一个从堆栈接收数据的函数,主要是在用call按下按钮后调用它。在函数asm中,我将其定义为GetVal进程。。GetVal endp。是我的错误吗?听起来你是在单独链接文件,而不是在一起链接。可能您需要做的是类似于
ml main.asm function.asm
。我认为您是对的。但是在我的资料或网上,我找不到如何像c一样链接文件。你能告诉我如何在masm32中搜索链接文件吗?或者如何构建makeit.bat文件?英语不是我的母语,所以可能这就是我错过它的原因。如果像
ml main.asm function.asm
这样的东西不起作用,你应该在命令行或
makeit.bat
文件中发布另一个问题,详细说明你正在运行的命令和收到的错误消息。用实际程序集文件的名称替换
main.asm
function.asm
。即使在my.inc文件中有externdef,我仍然会从main和function asm文件中得到链接错误。Main有未解析的函数,函数有未解析的三个值。我试图创建一个从堆栈接收数据的函数,主要是在用call按下按钮后调用它。在函数asm中,我将其定义为GetVal进程。。GetVal endp。是我的错误吗?听起来你是在单独链接文件,而不是在一起链接。可能您需要做的是类似于
ml main.asm function.asm
。我认为您是对的。但是在我的资料或网上,我找不到如何像c一样链接文件。你能告诉我如何在masm32中搜索链接文件吗?或者如何构建makeit.bat文件?英语不是我的母语,所以也许这就是为什么我