Assembly MASM中的长代码错误?

Assembly MASM中的长代码错误?,assembly,masm,Assembly,Masm,我目前正在做一个相当大的组装程序,它是一个聊天机器人。 它目前跨越700多行代码。在我的程序中,我有两个标签,我的程序使用这些标签来跟踪以随机方式移动的某些数据 让我向你解释发生了什么事。程序要做的工作很大,所以我倾向于把这些代码切碎。我为我的程序需要的所有功能创建单独的项目,当它们工作时,我将它们包含在主程序中 我刚刚完成了其中一个功能,并将其集成到我的程序中。函数位于我之前告诉过你的两个标签之间 当我试图编译程序时,我得到一个错误,错误是: ChatterBot.asm:未识别符号:EEEn

我目前正在做一个相当大的组装程序,它是一个聊天机器人。 它目前跨越700多行代码。在我的程序中,我有两个标签,我的程序使用这些标签来跟踪以随机方式移动的某些数据

让我向你解释发生了什么事。程序要做的工作很大,所以我倾向于把这些代码切碎。我为我的程序需要的所有功能创建单独的项目,当它们工作时,我将它们包含在主程序中

我刚刚完成了其中一个功能,并将其集成到我的程序中。函数位于我之前告诉过你的两个标签之间

当我试图编译程序时,我得到一个错误,错误是:

ChatterBot.asm:未识别符号:EEEndLength,这是第二个标签的名称

第655行的标签是633行,如果我再次删除该函数,错误就会消失,我确信新函数中不会出现相同的标签,并且我已经多次更改了它的名称

有人知道为什么会发生这种情况,以及我如何解决它吗

概述:

.386
.model flat,stdcall
option casemap:none
include \masm32\include\masm32rt.inc
include \masm32\include\masm32.inc
include \masm32\include\wsock32.inc
includelib \masm32\lib\wsock32.lib

system PROTO C, :PTR BYTE  
SavePoly PROTO 
       .code

Start:
...
...
mov ecx, (EEEdnLength - Startl) ; line 22, with the label 
...
...

Startl
...
...
GetNumb1And8 PROTO
Filleax PROTO
...
...
FSTR PROTO
recv PROTO
GetData PROTO, nread:DWORD
...
main proc
...
...
Rand proc  
...
Rand endp 
...
...
main endp
...
...
FSTR proc
...
...
FSTR endp 
...
...
GetData proc nread:DWORD
...
...
GetData endp
...
...
end main
...
...
EEEdnLength:
...
...
ret
SavePoly endp
EndForError:
edd:
ret ; kthxbai
end Start
编辑:现在我这样看它,我想我已经发现了什么问题,结束主要-这是错误的。我很抱歉浪费了你们的时间,确实是:end main搞糟了。

即使没有代码的摘录,也很难猜测,但有一种可能性是,如果使用.mode语句,MASM将默认只导出PROC的名称—一个定义为:mylabel:`的普通标签仅在源文件中可见


如果这是问题所在,您可以添加export-Eeendnlength,或者如果内存可用,您可以将其定义为:EEEndLength::两个冒号而不是一个。

EEEndLength在我看来似乎是一个拼写错误,应该是EEEndLength?不,不是这样,这确实是一个拼写错误,但两个标签的名称完全相同,所以这不是我很抱歉没有包括代码。但我可能不会这么做,这是一个自由职业者项目的一部分,但我可以向你们展示它的外观,我将用概述编辑我的主要帖子