2

在过去的一两天里,我一直在研究大会。我一直在阅读一个相当不错的教程,它涵盖了不同的寄存器/二进制数系统的工作原理等;但是,它并没有真正进入汇编代码本身。它只是讨论了汇编的概念及其工作原理等(它确实提供了一些代码示例,如下面的示例 - 但没有解释代码中发生的很多事情)。

msg db 'Displaying 9 stars', 0xa
len equ $ - msg
s2 times 9 db '*'

虽然我觉得我开始了解事情是如何工作的,但我想就上述代码提出一些问题(真的想了解它是如何工作的,而不是接受它工作的事实)。

1)任何文本都可以在 0xa 之后(我假设 0xa 是换行符)吗?

2)是否$ - VARIABLE(在这种情况下,$ - msg)获得变量的长度?$的真正目的是什么?

3) 这里发生了什么:s2 乘以 9 db ' '*

我在问题 #3 中的假设是变量 s2 只是被设置为一个字符串 9 。如果是这样,为什么 db ' ' 排在最后?做 s2 db '*' times 9 不是更有意义吗

4

1 回答 1

3

1)当然,你可以有第二行和第三行,等等。

2) 是的。$ 表示当前位置,所以 $ - 变量表示当前地址减去变量的起始地址,即长度。

3) 从当前段分配九个数据字节,每个字节都有一个字符值'*',地址命名为s2。

于 2013-07-29T04:36:25.520 回答