我正在尝试学习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'语句。但就是这样。