汇编程序 - EQU计算什么?

时间:2012-03-24 11:30:26

标签: assembly x86

在下一个代码中:

section .data
    sa db ’abxdefghxl’,0
    la  EQU $ - sa
    sb db ’abcdexghil’,0
section .text

正如我在程序中看到的那样,当我执行mov ecx时,la - 然后我在ECX中获得了11。 我不明白为什么 - abxdefghxl的数量不是10.我们还算0?

2 个答案:

答案 0 :(得分:2)

假设sa0x400开始。您已定义10(abxdefghxl)加1(最后0),因此la将从0x40B开始。 $表示当前指令/指令地址。因此$-sa = 0xB11

答案 1 :(得分:1)

$代表当前位置。由于当前位置是在完全声明“sa”之后,表达式$ -sa是11.请记住,在汇编中没有像“字符串”数据类型那样的东西,“sa”只是字节的集合。 / p>