Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .code32
- SYSEXIT = 1
- EXIT_SUCCESS = 0
- SYSWRITE = 4
- STDOUT = 1
- .data
- msg: .ascii "Hello world"
- msg_len = . - msg
- .text
- .global _start
- _start:
- xor %edx, %edx // Zerowanie edx do dzielenia
- mov $msg_len, %eax // dlugosc msg do eax
- movl $0x2, %ecx // dzielimy przez 2 -> do ecx
- divl %ecx // dzielimy przez ecx (eax:ecx)
- xor %edx, %edx // zerujemy edx bedzie inkrementowany w petli
- mov $msg_len, %ebx
- decl %ebx
- LOOP:
- movb msg(,%edx,1), %cl // msg[edx] do CL tymczasowo przechowuje
- movb msg(,%ebx,1), %ch //ebx = msg_len - edx - 1
- movb %ch, msg(,%edx,1) //CH do msg[edx]
- movb %cl, msg(,%ebx,1) //CL do msg[ebx]
- incl %edx // inkrementujemy edx
- decl %ebx
- cmp %edx, %eax
- jne LOOP //sprawdzamy czy koniec wykonywania petli
- mov $SYSWRITE, %eax
- mov $STDOUT, %ebx
- mov $msg, %ecx
- mov $msg_len, %edx
- int $0x80
- mov $SYSEXIT, %eax
- mov $EXIT_SUCCESS, %ebx
- int $0x80
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement