我的教授经常使用这种模式来编写涉及DS的代码。
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
[...]
DATA ENDS
CODE SEGMENT
START:
[...]
CODE ENDS
END START
END
根据他的概念,我们这样做是为了让汇编程序检查数据段。但是如果没有有效的解释,我真的无法同意它......
标签如何在细分受众群之外结束?
为什么汇编程序不能在没有它的情况下检查 DS?
装配中的标签是否不同?
END START
不是start
标签的"结尾"。 标签本身没有末端、长度或范围。 (为此使用proc foo
/endproc
,除非这只是 MASM 而不是 TASM(。
END START
是整个 asm 文件的结尾(在此之后解析停止(。END label
还设置入口点 = 指定的标签。 对于具有此目的的指令来说,这是一个奇怪的名称,但 TASM 非常古老。
(如果汇编程序不直接发出.exe
,则汇编程序可以将元数据放在.obj
文件中,以告知链接器入口点符号名称。
将标签视为可以从其他地方引用的零宽度标签,仅此而已。
如果你有一个要调用的函数的代码块,你可以在它前面贴一个标签,这样你就可以call
到那个点。 该函数的机器代码有一定的大小,但标签没有;它只是标记块的开始。 (因此,标签始终只有 1 个地址。