第一个程序-Hello World
按照国际惯例,第一个程序当然是hello world开始。
nasm输出“hello world”字符串,也许有N种方法,但是我们在linux平台下,只需要一种方法就OK了,那就是系统调用。
N中方法中的一些: BIOS功能调用,显存地址(
A0000-BFFFF)【参考《linux内核完全剖析》0.12的25页】,还有另一种是利用栈.
因为很多的汇编程序书籍开篇就一大堆的寄存器,操作系统原理让初学者很苦恼,为了减少这些烦恼,我们用到那里才学习那里,项目式的学习.
下面是系统调用的下载地址:
因为很多的汇编程序书籍开篇就一大堆的寄存器,操作系统原理让初学者很苦恼,为了减少这些烦恼,我们用到那里才学习那里,项目式的学习.
下面是系统调用的下载地址:
linux系统调用
我们需要接触的寄存器也就那几个:
eax 系统调用号.
EBX 第 1 个参数;
ECX 第 2 个参数.
EDX第 3 个参数.
ESI第 4 个参数.
EDI第 5 个参数.
我们需要接触的寄存器也就那几个:
eax 系统调用号.
EBX 第 1 个参数;
ECX 第 2 个参数.
EDX第 3 个参数.
ESI第 4 个参数.
EDI第 5 个参数.
[section .data]
hello db "hello, world!",0x0a
STRLEN equ $ - hello
[section .text]
global _start
_start:
mov ebx, 1
mov ecx, hello
mov edx, STRLEN
mov eax, 4
int 0x80
mov ebx, 0
mov eax, 1
int 0x80