Cooler_

ASM happy loop

Jan 30th, 2013
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # exemplo chamando exit() e write()
  2.  .section .data
  3.  output:
  4.  .ascii "feliz aniversario \o/ .\n"
  5.  output_end:
  6.  .equ len, output_end - output
  7.  .section .text
  8.  .globl _start
  9.  _start:
  10.  
  11. # seta 0 na stack pointer
  12.  movl $0, %esp
  13.  
  14. # goto
  15. loop:
  16. # mov com "l" significa que vamos usar 32bit vide tabela
  17. # eax deixamos o número do syscall que seria 4
  18.  movl $4, %eax  
  19. # $ cat unistd_32.h | grep write
  20. # define __NR_write 4  <-- num do syscall
  21. # número do descriptor 1 para out no primeiro argumento
  22.  movl $1, %ebx
  23. # nossa string no segundo argumento
  24.  movl $output, %ecx
  25. # tamanho da string no terceiro argumento
  26.  movl $len, %edx
  27. # executa  write(1,string,len);
  28.  int $0x80
  29.  
  30. # esp++;
  31.  incl %esp
  32. # compara esp
  33.  cmpl $27, %esp
  34. # enquanto for menor ou igual 27( 27 anos ?) goto loop
  35.  jle  loop
  36.  
  37. # exit()
  38.  movl $1, %eax
  39. # exit(0);
  40.  movl $0, %ebx
  41. # executa o exit() fecha...
  42.  int $0x80
Advertisement
Add Comment
Please, Sign In to add comment