从大会开始

时间:2015-03-10 05:11:55

标签: assembly x86

我正在尝试学习IA32 Assembly并且不知道如何开始。我试图创建一个简单的程序,它接受两个输入(a1和a2),将它们加在一起,然后返回总和。另一个程序也会修改给定的输入虚拟内存位置,并将其值缩放(乘以)5,并用这个新的倍数替换该数字。第三个程序会将字符串“helloworld”作为单个字符写入虚拟内存中的序列中。问题是,我甚至不知道从哪里开始。我正在阅读的这本书非常混乱,几乎没有关于任何特定主题的例子。

好的,这是我徒劳的尝试。我甚至不知道如何开始第三个。


第一个程序:

movl (memloc), %eax    // load the first argument
movl (memloc), %ecx    // load the second argument
addl %ecx, %eax        // add them
ret                    // return

注意:'memloc'是指内存位置。这本书说这些练习程序应该有参数,但我不知道如何在装配中解决这个问题。


第二个计划:

movl (memloc), %eax    // load the number
movl (memloc), %ecx    // load it again
addl %ecx, %eax        // do this four times to get 5 times the original number
addl %ecx, %eax
addl %ecx, %eax
addl %ecx, %eax
ret                    // return

注意:第一个程序关于'memloc'声明的相同注释。我不知道这个。


第三个计划:

我完全不知道如何做第三个程序。我知道它需要从寄存器到内存的一些'movl'语句。但就是这样。

0 个答案:

没有答案