汇编-标号
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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
2022-11-28 MFC-SetFocus设置焦点
2022-11-28 MFC-事件
2021-11-28 opencv-VideoCapture视频和摄像头读写
2021-11-28 opencv-行列式按行(列)展开