概念x86汇编32位

时间:2014-07-15 08:33:31

标签: assembly x86

enter image description here

有人可以解释如何yval = 3,5,7,9,11,13,10

我迷失在添加esi,4之后,这完全是混乱

2 个答案:

答案 0 :(得分:2)

我建议您掌握Jasmin之类的模拟器,这样您就可以逐步完成这样的简单示例,看看发生了什么:

Jasmin screen shot

当您单步执行代码时,您可以看到,对于每个循环迭代,您要从xval加载两个连续值,添加它们,并将它们存储到yval

因此,在第一次迭代中加载1和2,将它们添加到3,然后将其存储到yval的第一个元素。在下一次迭代中,你得到2 + 3 = 5,依此类推。

最后一次迭代有点棘手,因为源值是从xval的最后一个元素和yval的第一个元素加载的,所以你得到7 + 3 = 10.

答案 1 :(得分:0)

ESI包含一个指向32位(DWORD)值xval数组的指针。

“add esi,4”将ESI推进4个字节,例如DWORD的大小;如果这是C,则为ESI + = sizeof(DWORD);从而推进ESI指向数组xval中的下一个插槽。

如有疑问,请获取说明书手册,并仔细研究;在intel网站上有一些非常好的。是的,它们的尺寸实际上是令人畏惧的,第一次打开它可能会花费你几个小时,因为你在手册中偶然发现了所有的碎片。如果您打算进行任何严肃的汇编语言编程,这将是非常宝贵的经验。

我会把剩下的留给你。