在linux简单之美(二)中我们尝试使用了C库的函数完成功能,那么能不能用syscall方式
来搞呢?显然可以!
section .data
ft db "now is X",10
section .text
global _start
_start:
mov edi,10
again:
dec edi
mov eax,edi
add eax,0x30
mov byte [ft+7],al
mov eax,4
mov ebx,1
mov ecx,ft
mov edx,9
int 0x80
mov eax,162
push 0
push 1
mov ebx,esp
mov ecx,0
int 0x80
cmp edi,0
jnz again
mov eax,4
mov ebx,1
mov ecx,msg
mov edx,15
int 0x80
mov eax,1
mov ebx,0
int 0x80
msg:
db "happy xxx day!",10
nasm -f elf main.asm
ld -m elf_i386 -o main main.o
在代码中延时使用的是nanosleep,其他和第一篇一致,只不过做了一个bin->ascii的小转换.