section .bss result1 resb 64 result2 resb 64 section .data msg db 'Rw,EGH8URh9awhG(AWHg97ahgw98agh(*AWGHJ89awghjwaURjwWarrfafwakfeA' len equ $ - msg nl db 0xa lennl equ $ - nl mask dq 0000000110000010001000000000000001111100000000011000000000000001b section .text global _start %macro print 0 mov rax,4 mov rbx,1 int 0x80 %endmacro %macro writeln 0 print mov rdx,lennl mov rcx,nl print %endmacro %macro exit 0 mov rax,1 mov rbx,0 int 0x80 %endmacro _start: ; First loop xor rsi,rsi xor rdi,rdi mov rcx,len mov rax,[mask] _fl: shl rax,1 jnc _fle cmp [msg+rsi], byte 'A' jl _fle cmp [msg+rsi], byte 'Z' jg _fle mov bl,[msg+rsi] mov [result1+rdi],bl inc rdi _fle: inc rsi loop _fl mov rdx,rdi mov rcx,result1 writeln ; Second loop xor rdi,rdi mov rsi,len-1 mov rcx,len _sl: mov al, [msg+rsi] cmp al, ',' jne _sla cmp rsi,0 jz _sla cmp [msg+rsi-1], byte 'a' jl _sla cmp [msg+rsi-1], byte 'z' jg _sla jmp _slb _sla: mov [result2+rdi], al inc rdi _sle: dec rsi loop _sl _slb: mov rdx,rdi mov rcx,result2 writeln exit