这是我的代码(我使用TASM)
CODE SEGMENT
ASSUME CS:CODE, DS:CODE, SS:CODE
org 256
;------start-------
STARTPROC PROC
mov ax, CODE
ret
STARTPROC ENDP
CODE ENDS
end STARTPROC
“mov ax,CODE”行导致TLINK错误 - “无法生成COM文件:存在段可重定位项”。 我不明白为什么这么糟糕?我只使用一个段。
答案 0 :(得分:2)
尝试引用像你一样的片段会给链接器带来心脏病发作,你要求它预测不可预测的。这只能在可重定位的可执行文件中运行,即.exe。这是一种可执行文件格式,它还包含代码中需要针对段的加载地址进行调整的位置列表。写入.exe文件,好像每个段加载到0000:0000。操作系统加载程序确定每个段在运行时实际加载的位置。然后遍历该表,修补代码以添加段加载地址。然后启动程序。这不能在.com文件中工作,它没有该表。