neongm

hello_world.asm

Mar 14th, 2021
995
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. section .text
  2.     global _start:
  3.  
  4.  
  5. _start:
  6.  
  7.     push hw         ; get the length to edx
  8.     call strlen
  9.     ; call the print function
  10.     push hw     ; message
  11.     push edx    ; length from strlen
  12.     call printout  
  13.    
  14.     ; call end of the programm function
  15.     call endprogram
  16.    
  17.    
  18. section .data
  19.     hw db "hello world, blyat!", 0
  20.  
  21.  
  22. strlen:
  23.     pop ebx     ; save the ret adress
  24.     pop edx     ; get the msg to the data-register
  25.     push ebx    ; get back the ret adress
  26.     mov ecx, 0  ; counter
  27. _loop:
  28.     inc ecx
  29.     cmp byte[edx+ecx], 0
  30.     je end      ; if end-byte found
  31.     inc ecx
  32.     loop _loop  ; if not found
  33.    
  34.     end:
  35.     mov edx, ecx; push the result into data-register
  36.     ret         ; get back!
  37.    
  38.    
  39. printout:
  40.     pop ebx     ; save the ret adress
  41.     pop edx     ; get the length  2nd arg
  42.     pop ecx     ; get the message 1st arg
  43.     push ebx    ; push it back
  44.     mov eax, 4  ; set up print
  45.     mov ebx, 1  ; to the console output
  46.     int 0x80    ; print it
  47.     ret         ; get back
  48.  
  49.  
  50. endprogram:
  51.     mov eax, 1  ; exit instruction
  52.     mov ebx, 0  ; error code
  53.     int 0x80    ; call the interruption
RAW Paste Data