在 Linux 上使用 NASM 的汇编语言.EDX, ECX, EBX.EAX 国际 80h



这是我的教授给出的一段汇编语言代码 我。你能告诉我它是如何工作的吗?尤其是"int 80h"部分。我在网上寻找答案,但这对我来说并没有意义。

section .data string: db "Hello World", 0x0a 
len:     equ $ - string
section .text 
global main 
main:
mov edx, len
mov ecx, string
mov ebx, 1
mov eax, 4
int 80h
cmp eax, 0        
je go
go:
xor ebx, ebx
mov eax, 1
int 80h

我知道edx,ecx等是寄存器位置,但是,我不明白它如何替代。

我知道 mov 是移动的助记符,如果等于,je 是跳跃,但其余的有点超出我的舒适区。

我的教授把我们扔进了这里的深渊,想知道谁能先弄清楚,所以任何帮助总是值得赞赏的。

首先,您应该查看 x86 system_call。然后你就可以理解主要功能了。 第一行中的"Hello world"设置为字符串值。第二行计算变量的长度,然后使用系统调用在屏幕上打印消息。如果操作失败,程序将跳转到"go"并使用"mov eax ,1"调用system_exit。最后"int 80h"表示调用内核

相关内容

  • 没有找到相关文章

最新更新