原文链接:linux简单之美(三)
在linux简单之美(二)中我们尝试使用了C库的函数完成功能,那么能不能用syscall方式来搞呢?显然可以!
1 section .data 2 ft db "now is X",10 3 4 section .text 5 global _start 6 7 _start: 8 mov edi,10 9 again: 10 dec edi 11 mov eax,edi 12 add eax,0x30 13 mov byte [ft+7],al 14 15 mov eax,4 16 mov ebx,1 17 mov ecx,ft 18 mov edx,9 19 int 0x80 20 21 mov eax,162 22 push 0 23 push 1 24 mov ebx,esp 25 mov ecx,0 26 int 0x80 27 28 cmp edi,0 29 jnz again 30 31 mov eax,4 32 mov ebx,1 33 mov ecx,msg 34 mov edx,15 35 int 0x80 36 37 mov eax,1 38 mov ebx,0 39 int 0x80 40 41 msg: 42 db "happy xxx day!",10
编译链接命令如下:
nasm -f elf main.asm
ld -m elf_i386 -o main main.o
在代码中延时使用的是nanosleep,其他和第一篇一致,只不过做了一个bin->ascii的小转换.
[原创]linux简单之美(三),布布扣,bubuko.com
时间: 2024-11-03 21:08:43