【发布时间】:2015-10-21 06:58:24
【问题描述】:
据我了解,NASM(与所有优秀的汇编程序一样)允许您通过在本地标签前加上句点来定义本地标签,并且它允许以后的定义覆盖以前的定义。
我看到的演示代码如下:
part1 mov ax, 10
.loop ; do something
dec ax
jnz .loop
part2 mov ax, 50
.loop ; do something
dec ax
jnz .loop
在这种情况下,后面的定义会覆盖前面的定义,以便选择正确的标签。
但是,我看不出在以下场景中这是如何工作的。
part1 mov ax, 10
.loop jz .fin
; do something else
dec ax
jmp .loop
.fin
part2 mov ax, 50
.loop jz .fin
; do something else
dec ax
jmp .loop
.fin
在第二个循环中的jz .fin 被组装时,.fin 的早期 实例肯定仍然处于活动状态,它会跳转到错误的位置。
或者 NASM 是否比这更聪明并使用其他方法来决定在任何给定时间哪个标签处于活动状态?
【问题讨论】:
标签: nasm