MASM中的Label伪指令

  在学习16位MASM汇编中,label并不陌生,在代码中通过名称+冒号(:)的形式定义label非常常见。但label伪指令却不常见,但有时确实很重要。它相当于把所在位置后的代码或数据看成label定义的新的数据类型或新的label(冒号形式)。听着有点抽象,实例如下:

  一、代码标号(code label)

  语法:name LABEL distance

  distance可以是:near、far和proc(proc的意思是可以使near或far,要根据内存模型memory model决定)

  作用是为子程序proc提供一个其他入口,例如:

task proc far
... ...
task1 label far(第二个入口)
... ...
ret
task endp

  二、为变量提供其他尺寸的访问方式(label variables)

  语法:name LABEL type

  type可以使:byte、word、dword、fword、qword、tword,也可使结构图(structrue)等。

  作用是为数据提供其他的访问方式,例如:

warry label word
darry label dword
barry label 100 dup(?)

  三、定义子例程

  语法:name LABEL far/near

      ... ...

      retf [constant]/retn [constant]

  这里的name label near就可以直接定义成name:(编号+冒号)的形式。

  例如:

mypro label far 
    ... ...
    retf

  总的来说,label伪指令可以提供重新访问代码或数据的方式,可以用在任何地方,类型为near、far或proc就可以通过call访问,类型为byte、word、dword、fword、qword、tword等,就可以通过mov等数据指令访问。

posted @ 2023-09-03 18:23  美洲象  阅读(89)  评论(0编辑  收藏  举报