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等數據指令訪問。

浙公網安備 33010602011771號