SECTION段定义语句中使用vstart子句

SECTION段定义语句中使用vstart子句

Content #

NASM的分段程序中,默认情况下,引用某个标号时,该标号的汇编地址是从整个程序的起始位置开始的偏移。

section a
        mov ax,1
        mov ax,2
    a_label:
        mov ax,3
section b
        mov ax,4
        mov ax,5
    b_label:
        mov ax,6
b_label:

b_label的值是从section a的开始位置开始的偏移,值为0x12,表示距离开始位置18个字节。

为了获取b_label距离当前段起始位置段的偏移量,这个时候就需要加vstart=0,代码如下:

section a
        mov ax,1
        mov ax,2
    a_label:
        mov ax,3
section b vstart=0
        mov ax,4
        mov ax,5
    b_label:
        mov ax,6
b_label:	;此时该位置的值是0x06,说明距离段b的距离是6个字节

Viewpoint #

From #