【发布时间】:2011-05-06 00:45:58
【问题描述】:
我正在尝试从头开始学习组装。我已经阅读了很多,但即使是我在参考书中找到的以下简单程序也让我感到困惑:
section .data
msg db "Hello!", 0xa
len equ $ - msg
section .text
global _start
_start:
move edx, len
move ecx, msg
move ebx, 1
move eax, 4
int 0x80
move ebx, 0
move eax, 1
int 0x80
现在显然这应该打印“Hello”。 但我什至不知道在任何阶段发生了什么。 前两个阶段将消息长度和messgae 放在两个寄存器中,不再使用。我不明白为什么。
我不知道为什么需要四个不同的寄存器。
【问题讨论】:
-
这本书适用于什么处理器?你用的是什么处理器?
-
我很确定它适用于 x86 处理器。
标签: linux assembly x86 system-calls cpu-registers