Assembly 汇编程序-EQU计算什么?

Assembly 汇编程序-EQU计算什么?,assembly,x86,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?$表示当前位置。由于当前位置在“sa”的完整声明之后,表达式$-sa是11。请记住,在汇编中没有“字符串”数据类型,“sa”只是字节的

在下一个代码中:

section .data
    sa db ’abxdefghxl’,0
    la  EQU $ - sa
    sb db ’abcdexghil’,0
section .text
正如我在程序中看到的,当我做mov ecx时,la-然后我得到了ecx中的数字11。
我不明白为什么-
abxdefghxl
的数量不是10。我们还计算0?

$表示当前位置。由于当前位置在“sa”的完整声明之后,表达式$-sa是11。请记住,在汇编中没有“字符串”数据类型,“sa”只是字节的集合。

$表示当前位置。由于当前位置在“sa”的完整声明之后,表达式$-sa是11。请记住,在汇编中没有“字符串”数据类型,“sa”只是字节的集合。

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

当然,它需要“here”和
sa
之间的位置差,所以它计算两者之间的所有内容。当然,它需要“here”和
sa
之间的位置差,因此,它计算介于两者之间的所有内容。
$-sa
将是11,因为他在字符串的末尾有一个额外的零。@PavanManjunath:当然,我的意图是键入11。谢谢,我现在已经更正了。
$-sa
应该是11,因为他在字符串的末尾有一个额外的零。@PavanManjunath:当然,我是想键入11。谢谢,我现在已经改正了。