MASM有一个::运算符吗?

时间:2017-08-28 05:53:37

标签: assembly masm

Microsoft operators reference for MASM在其他部分显示了::运算符。

此项目的链接会打开;; operator的页面。

我不是这是表中的错误名称还是项目上的错误链接。还有其他几个项目有错误的链接。

MASM是否有::运营商?它有什么作用?

2 个答案:

答案 0 :(得分:6)

是的,确实如此。

我在旧TASM 4 manual中找到了对它的引用(打印文档的第124页,PDF的135)。

用于定义范围比定义范围更广的标签。

考虑:

foo PROC

lbl:
  ret

foo ENDP

bar PROC
 jmp lbl     ;Undefined symbol lbl
bar ENDP

这不会在MASM中汇编,因为lbl在另一个程序中 但是,这个:

foo PROC

lbl::
  ret

foo ENDP

bar PROC
 jmp lbl     ;Fine
bar ENDP

一样。

据我记忆,TASM / NASM中的标签行为不同,它们没有范围(可以使TASM模拟MASM)。

答案 1 :(得分:5)

1996年的Microsoft书籍MASM程序员指南6.1揭示了一些额外的语义。

双冒号::可用于将寄存器值生成的far指针作为过程调用中的参数传递。第157页描述了它:

  

您可以在 segment :: offset 对中传递 FAR 指针,如下所示。注意使用双冒号来分隔寄存器对   ..
  INVOKE SomeProc, ES::BX, arg1, arg2