Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- SYSCALL32 = 0x80
- EXIT = 1
- STDIN = 0
- READ = 3
- BUF_SIZE = 10
- HexDistance = 'a' - 10
- WRITE = 4
- STDOUT = 1
- .data
- BUF: .space BUF_SIZE, 0
- .text
- .globl _start
- _start:
- movl $BUF_SIZE, %edx
- movl $BUF, %ecx
- movl $STDIN, %ebx
- movl $READ, %eax
- int $SYSCALL32
- movl %eax, %esi
- dec %esi
- dec %esi
- movl $0, %edi
- convert:
- movb BUF(,%edi,1), %bl
- cmpb $'9', %bl
- jg subHex
- sub $'0',%bl
- jmp setValue
- subHex:
- sub $HexDistance,%bl
- setValue:
- movb %bl, BUF(,%edi,1)
- cmp %eax, %edi
- jge setRegister
- inc %edi
- jmp convert
- setRegister:
- mov $0,%edi
- xor %eax, %eax
- setValueInRegister:
- movb BUF(,%edi,1), %bl
- or %bl,%al
- # shl $4, %rax
- cmpl %esi, %edi
- je koniec
- shl $4, %eax
- inc %edi
- jmp setValueInRegister
- koniec:
- # shr $4, %rax
- movl $EXIT, %eax
- int $SYSCALL32
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement