汇编语言x86-在Linux上使用NASM。 EDX,ECX,EBX。 EAX int 80小时

时间:2018-09-28 22:16:09

标签: assembly x86 x86-64 system-calls mnemonics

这是我的教授给出的一段汇编语言代码 我。您能说说它的运作方式吗?特别是“ 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等于则跳,但是其余的有点超出我的舒适范围。

我的教授已经把我们扔到了最深处,想知道谁能首先弄清楚这个问题,所以总是能得到任何帮助。

1 个答案:

答案 0 :(得分:0)

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