Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 如何修复microsoft 16位链接器上的错误L2029?_Assembly_Linker_Masm_X86 16_16 Bit - Fatal编程技术网

Assembly 如何修复microsoft 16位链接器上的错误L2029?

Assembly 如何修复microsoft 16位链接器上的错误L2029?,assembly,linker,masm,x86-16,16-bit,Assembly,Linker,Masm,X86 16,16 Bit,我正在尝试从中组装debug.exe/com,起初它不起作用,但我一直在更改一些文件名,并且我已经设法使用link(16位版本)获得了一个.obj文件。某些命令出现错误(错误L2029:未解析的外部),我不知道该怎么做,是否需要添加一些库 以下是失败的错误和命令: batch C:\Users\<my_username>\Desktop\Assembly>link16.exe Microsoft (R) Segmented Executable Linker Version

我正在尝试从中组装debug.exe/com,起初它不起作用,但我一直在更改一些文件名,并且我已经设法使用link(16位版本)获得了一个.obj文件。某些命令出现错误(错误L2029:未解析的外部),我不知道该怎么做,是否需要添加一些库

以下是失败的错误和命令:

batch
C:\Users\<my_username>\Desktop\Assembly>link16.exe

Microsoft (R) Segmented Executable Linker  Version 5.60.339 Dec  5 1994
Copyright (C) Microsoft Corp 1984-1993.  All rights reserved.

Object Modules [.obj]: debug.obj
Run File [debug.exe]: 
List File [nul.map]:
Libraries [.lib]:
Definitions File [nul.def]:
LINK : warning L4021: no stack segment

debug.obj(DEBUGGER) : error L2029: 'PARSERR' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'GO' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'REG' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'NAME' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'BYTEBUF' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'RELEASEPARITY' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'DUMP' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'FILL' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'DEFIO' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'LINEBUF' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'COMPARE' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'DSIZ' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'MOVE' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'LOAD' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'DEFDUMP' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'PARITYMES' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'DISPB' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'TRACE' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'TRAPPARITY' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'PERR' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'HEADSAVE' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'BADVER' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'DATAEND' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'ASSEM' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'LBUFSIZ' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'SPSAVE' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'ENDMES' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'BACMES' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'ASMADD' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'SKIP_FILE' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'PREPNAME' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'NEWEXEC' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'ZTRACE' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'DSSAVE' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'DISADD' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'DWRITE' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'DEBUG_FOUND' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'STACK' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'SEARCH' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'ENTER' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'QFLAG' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'INPUT' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'PARITYFLAG' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'UNASSEM' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'GETHEX' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'GETEOL' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'CSSAVE' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'CARRET' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'NOREGL' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'OUTPUT' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'USER_PROC_PDB' : unresolved external
debug.obj(DEBUGGER) : error L2029: 'IPSAVE' : unresolved external


There were 52 errors detected
批处理
C:\Users\\Desktop\Assembly>link16.exe
Microsoft(R)分段可执行链接器版本5.60.339 1994年12月5日
版权所有(C)微软公司1984-1993年。版权所有。
对象模块[.obj]:debug.obj
运行文件[debug.exe]:
列表文件[nul.map]:
图书馆[.lib]:
定义文件[nul.def]:
链接:警告L4021:无堆栈段
debug.obj(调试器):错误L2029:“PARSERR”:未解析的外部
debug.obj(调试器):错误L2029:“GO”:未解析的外部
debug.obj(调试器):错误L2029:“REG”:未解析的外部
debug.obj(调试器):错误L2029:“名称”:未解析的外部
obj(调试器):错误L2029:“BYTEBUF”:未解析的外部
debug.obj(调试器):错误L2029:“RELEASEPARITY”:未解析的外部
obj(调试器):错误L2029:“转储”:未解析的外部
debug.obj(调试器):错误L2029:“填充”:未解析的外部
debug.obj(调试器):错误L2029:“DEFIO”:未解析的外部
debug.obj(调试器):错误L2029:“LINEBUF”:未解析的外部
obj(调试器):错误L2029:“比较”:未解析的外部
debug.obj(调试器):错误L2029:“DSIZ”:未解析的外部
obj(调试器):错误L2029:“移动”:未解析的外部
obj(调试器):错误L2029:“加载”:未解析的外部
obj(调试器):错误L2029:“DEFDUMP”:未解析的外部
obj(调试器):错误L2029:“PARITYMES”:未解析的外部
obj(调试器):错误L2029:“DISPB”:未解析的外部
debug.obj(调试器):错误L2029:“跟踪”:未解析的外部
obj(调试器):错误L2029:“陷阱”:未解析的外部
obj(调试器):错误L2029:“PERR”:未解析的外部
debug.obj(调试器):错误L2029:“HEADSAVE”:未解析的外部
debug.obj(调试器):错误L2029:“BADVER”:未解析的外部
debug.obj(调试器):错误L2029:“DATAEND”:未解析的外部
debug.obj(调试器):错误L2029:“ASSEM”:未解析的外部
debug.obj(调试器):错误L2029:“LBUFSIZ”:未解析的外部
obj(调试器):错误L2029:“SPSAVE”:未解析的外部
obj(调试器):错误L2029:“ENDMES”:未解析的外部
obj(调试器):错误L2029:“BACMES”:未解析的外部
debug.obj(调试器):错误L2029:“ASMADD”:未解析的外部
debug.obj(调试器):错误L2029:“跳过文件”:未解析的外部
debug.obj(调试器):错误L2029:“PREPNAME”:未解析的外部
debug.obj(调试器):错误L2029:“NEWEXEC”:未解析的外部
debug.obj(调试器):错误L2029:“ZTRACE”:未解析的外部
debug.obj(调试器):错误L2029:“DSSAVE”:未解析的外部
obj(调试器):错误L2029:“DISADD”:未解析的外部
debug.obj(调试器):错误L2029:“DWRITE”:未解析的外部
obj(调试器):错误L2029:“找到调试”:未解析的外部
debug.obj(调试器):错误L2029:“堆栈”:未解析的外部
debug.obj(调试器):错误L2029:“搜索”:未解析的外部
debug.obj(调试器):错误L2029:“输入”:未解析的外部
obj(调试器):错误L2029:“QFLAG”:未解析的外部
debug.obj(调试器):错误L2029:“输入”:未解析的外部
debug.obj(调试器):错误L2029:“PARITYFLAG”:未解析的外部
obj(调试器):错误L2029:“UNASSEM”:未解析的外部
obj(调试器):错误L2029:“GETHEX”:未解析的外部
debug.obj(调试器):错误L2029:“GETEOL”:未解析的外部
debug.obj(调试器):错误L2029:“CSSAVE”:未解析的外部
debug.obj(调试器):错误L2029:“CARRET”:未解析的外部
obj(调试器):错误L2029:“NOREGL”:未解析的外部
obj(调试器):错误L2029:“输出”:未解析的外部
debug.obj(调试器):错误L2029:'USER_PROC_PDB':未解析的外部
obj(调试器):错误L2029:“IPSAVE”:未解析的外部
共检测到52个错误
我使用的代码、工具和其他依赖项可以从下载


如何修复这些未解决的错误?

未解决的外部链接器错误告诉您在您处理的对象文件中找不到符号。在您的情况下,您只需将
DEBUG.ASM
组装到
DEBUG.OBJ
,然后链接到
DEBUG.EXE
。粗略地看一眼,就会发现许多缺少的符号位于
DEBDATA.ASM
DEBCONST.ASM
、和
DEBCOM2.ASM
(可能是其他文件,但这些文件中包含了大部分符号)。您需要将这些ASM文件组合成目标文件,并将它们与
DEBUG.OBJ
链接在一起,以生成最终的
DEBUG.EXE
可执行文件


链接时,如果有未解析的符号,则需要找到定义符号的文件,然后以某种方式将它们组装并链接到程序中。

我编写了一个脚本来组装MS-DOS 2.00的调试。以下是脚本:全文引用:

@echo %DEBUG%off
masm debug debug debug;
masm debasm debasm debasm;
masm debcom1 debcom1 debcom1;
masm debcom2 debcom2 debcom2;
masm debconst debconst debconst;
masm debdata debdata debdata;
masm debmes debmes debmes;
masm debuasm debuasm debuasm;
link debug debasm debcom1 debcom2 debconst debdata debmes debuasm;
exe2bin debug
move /y debug.bin debug.com

在我的repo中,我也将所有文件移到了一个子目录中。

没有像您可以在命令行中使用
link16 debug.obj、debug.exe、,,
在“Building MS-DOS 2.00's debug(version 2.30)”中提供的那样输入所有名称,我无法使用masm来构建debcom2,但是多亏了你添加的链接,我下载了debcom2.obj并最终构建了debug,谢谢!构建debcom2是如何失败的?我真的不能告诉你,我使用DOSBox是因为我有一个64位系统,我只能看到最后的错误…你的解决方案也不错,但你错过了一些文件,谢谢。