首页 > 解决方案 > 汇编语言 x86 - 在 Linux 上使用 NASM。EDX、ECX、EBX。EAX int 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 是 move 的助记符, je 是 jump 如果等于,但其余的有点超出我的舒适区。

我的教授已经把我们推到了这里,想知道谁能先弄清楚,所以我们总是感谢任何帮助。

标签: assemblyx86x86-64system-callsmnemonics

解决方案


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


推荐阅读