这有点奇怪,但我今天正在研究 GNU 汇编器(我希望至少能够阅读语法),并试图让我这个人为的小例子工作。也就是说,我只想从 0 到 100,一直打印数字。所以几分钟后我想出了这个:
# count.s: print the numbers from 0 to 100.
.text
string: .asciz "%d\n"
.globl _main
_main:
movl $0, %eax # The starting point/current value.
movl $100, %ebx # The ending point.
_loop:
# Display the current value.
pushl %eax
pushl $string
call _printf
addl $8, %esp
# Check against the ending value.
cmpl %eax, %ebx
je _end
# Increment the current value.
incl %eax
jmp _loop
_end:
我从中得到的只是 3 一遍又一遍地打印。就像我说的,只是一个人为的例子,所以不要太担心,这不是生死攸关的问题。
(格式有点乱,但没什么大不了的)。