Assembly MASM中的长代码错误?
我目前正在做一个相当大的组装程序,它是一个聊天机器人。 它目前跨越700多行代码。在我的程序中,我有两个标签,我的程序使用这些标签来跟踪以随机方式移动的某些数据 让我向你解释发生了什么事。程序要做的工作很大,所以我倾向于把这些代码切碎。我为我的程序需要的所有功能创建单独的项目,当它们工作时,我将它们包含在主程序中 我刚刚完成了其中一个功能,并将其集成到我的程序中。函数位于我之前告诉过你的两个标签之间 当我试图编译程序时,我得到一个错误,错误是: ChatterBot.asm:未识别符号:EEEndLength,这是第二个标签的名称 第655行的标签是633行,如果我再次删除该函数,错误就会消失,我确信新函数中不会出现相同的标签,并且我已经多次更改了它的名称 有人知道为什么会发生这种情况,以及我如何解决它吗 概述:Assembly MASM中的长代码错误?,assembly,masm,Assembly,Masm,我目前正在做一个相当大的组装程序,它是一个聊天机器人。 它目前跨越700多行代码。在我的程序中,我有两个标签,我的程序使用这些标签来跟踪以随机方式移动的某些数据 让我向你解释发生了什么事。程序要做的工作很大,所以我倾向于把这些代码切碎。我为我的程序需要的所有功能创建单独的项目,当它们工作时,我将它们包含在主程序中 我刚刚完成了其中一个功能,并将其集成到我的程序中。函数位于我之前告诉过你的两个标签之间 当我试图编译程序时,我得到一个错误,错误是: ChatterBot.asm:未识别符号:EEEn
.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?不,不是这样,这确实是一个拼写错误,但两个标签的名称完全相同,所以这不是我很抱歉没有包括代码。但我可能不会这么做,这是一个自由职业者项目的一部分,但我可以向你们展示它的外观,我将用概述编辑我的主要帖子