Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- %macro pushd 0
- push edx
- push ecx
- push ebx
- push eax
- %endmacro
- %macro popd 0
- pop eax
- pop ebx
- pop ecx
- pop edx
- %endmacro
- %macro print 2
- pushd
- mov edx, %1
- mov ecx, %2
- mov ebx, 1
- mov eax, 4
- int 0x80
- popd
- %endmacro
- %macro dprint 0
- pushd
- mov ecx, 10
- mov bx, 0
- %%_divide:
- mov edx, 0
- div ecx
- push dx
- inc bx
- test eax, eax
- jnz %%_divide
- mov cx, bx
- %%_digit:
- pop ax
- add ax, '0'
- mov [count], ax
- print 1, count
- dec cx
- mov ax, cx
- cmp cx, 0
- jg %%_digit
- print nlen, newline
- popd
- %endmacro
- section .text
- global _start
- _start:
- print len, msg
- print nlen, newline
- mov ebx, 0
- _loop:
- mov al, [msg + ebx]
- cmp al, 'Z'
- jle _end
- sub eax, 32
- _end:
- mov [symbol], eax
- print 1, symbol
- inc ebx
- cmp ebx, len
- jne _loop
- print nlen, newline
- mov eax, 1
- int 0x80
- section .data
- msg db "AsSembLER"
- len equ $ - msg
- newline db 0xA, 0xD
- nlen equ $ - newline
- section .bss
- symbol resb 1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement