[我的教授经常在涉及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文件的结尾,并且还将入口点设置为指定的标签。这是用于此目的的指令的怪异名称,但是TASM很旧。
将标签视为零宽度标签,您可以从其他地方引用,仅此而已。
如果您要调用的函数具有代码块,请在其前面粘贴标签,以便可以将call
标记到该位置。该功能的机器代码有一定的大小,但标签没有大小。它只是标记块的开始。 (因此,标签始终只有1个地址。)