汇编-标号

 

 

1.全局标号和局部标号 

当在程序中使用一条跳转指令的时候,可以用标号来表示跳转的目的地,编译器在编译的时候会把它替换成地址,标号既可以定义在目的指令同一行的头部,也可以在目的指令前行单独用一行定义,标号定义的格式是:
标号名:目的指令   ;方法1

标号名::目的指令     ; 方法2

常用的方法是使用方法1(标号后跟一个冒号【局部标号】),这时标号的作用域是当前的子程序,在单个

子程序中的标号不能同名,否则编译器不知该用哪个地址,但在不同的子程序中可以有相同名称的标号,这意味着不能从一个子程序中用跳转指令跳到另一个子程序中。

需要从一个子程序中用跳转指令跳到另一个子程序中的标号时,可以用方法2(标号后跟两个冒号【全局标号】)来定义,这时标号的作用域是整个程序,对任何其他子程序都是可见的

 

 

2.MASM中的@@

当用@@做标号时,可以用@F和@B来引用它,@F表示本条指令后的第一个@@标号,@B表示本条指令前的第一个@@标号,程序中可以有多个@@标号,但@B和@F只寻找匹配最近的一个

.386
.model flat,stdcall
.stack 4096


ExitProcess PROTO,dwExitCode:DWORD

.data


.code
main PROC
    
    mov ecx,10
    mov eax,0
 @@:
    add eax,2
    loop @B  ;@B表示本条指令前的第一个@@标号



    INVOKE ExitProcess,0
main ENDP
END  main

 

 

 

 

 

posted @ 2023-11-28 10:24  天子骄龙  阅读(196)  评论(0)    收藏  举报