aranhid

Untitled

Sep 27th, 2020
537
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. %macro pushd 0
  2.     push edx
  3.     push ecx
  4.     push ebx
  5.     push eax
  6. %endmacro
  7.  
  8. %macro popd 0
  9.     pop eax
  10.     pop ebx
  11.     pop ecx
  12.     pop edx
  13. %endmacro
  14.  
  15. %macro print 2
  16.     pushd
  17.     mov edx, %1
  18.     mov ecx, %2
  19.     mov ebx, 1
  20.     mov eax, 4
  21.     int 0x80
  22.     popd
  23. %endmacro
  24.  
  25. %macro dprint 0
  26.     pushd
  27.    
  28.     mov ecx, 10
  29.     mov bx, 0
  30.    
  31.     %%_divide:
  32.         mov edx, 0
  33.         div ecx
  34.         push dx
  35.         inc bx
  36.         test eax, eax
  37.         jnz %%_divide
  38.  
  39.     mov cx, bx
  40.    
  41.     %%_digit:
  42.         pop ax
  43.         add ax, '0'
  44.         mov [count], ax
  45.         print 1, count
  46.         dec cx
  47.         mov ax, cx
  48.         cmp cx, 0
  49.         jg %%_digit
  50.        
  51.     print nlen, newline
  52.     popd
  53. %endmacro
  54.  
  55. section .text
  56.  
  57. global _start
  58.  
  59. _start:
  60.     print len, msg
  61.     print nlen, newline
  62.    
  63.     mov ebx, 0
  64. _loop:
  65.     mov al, [msg + ebx]
  66.     cmp al, 'Z'
  67.    
  68.     jle _end
  69.    
  70.     sub eax, 32
  71.    
  72. _end:
  73.     mov [symbol], eax
  74.     print 1, symbol
  75.     inc ebx
  76.     cmp ebx, len
  77.     jne _loop
  78.    
  79.    
  80.     print nlen, newline
  81.     mov     eax, 1
  82.     int     0x80
  83.  
  84. section .data
  85.     msg db "AsSembLER"
  86.    
  87.     len equ $ - msg
  88.     newline db 0xA, 0xD
  89.     nlen equ $ - newline
  90.    
  91. section .bss
  92.    
  93.     symbol resb 1
RAW Paste Data