global _start
section .data
X: db 0, 2, 8, 7, 1, 6, 4, 1, 7, 6, 6, 5, 3, 3, 9, 1, 0, 7, 3, 2
Xdcb: db 0, 2, 8, 7, 1, 6, 4, 1, 7, 6, 6, 5, 3, 3, 9, 1, 0, 7, 3, 2, 10, 13
ch2: db 0, 0, 10, 13
section .text
_start:
call Digit2DCBStr
mov rcx, Xdcb
mov rdx, 22
mov eax, 0x04
mov ebx, 0x01
int 0x80
call hash
call ch2f
mov rcx, ch2
mov rdx, 4
mov eax, 0x04
mov ebx, 0x01
int 0x80
mov eax, 0x01
mov ebx, 0x00
int 0x80
convert2DCB:
add rax, '0'
ret
Digit2DCBStr:
mov rsi, X
mov rdi, Xdcb
mov rcx, 20
Digit2DCBStrLoop:
mov al, [rsi]
add al, '0'
mov [rdi], al
inc rdi
inc rsi
dec rcx
cmp rcx, 0x00
jnz Digit2DCBStrLoop
ret
hash:
mov rdx, 0
mov rsi, X
mov rcx, 10
hashloop:
;mov rbx, [rsi]
;mov rax, rbx
mov rax, [rsi]
mov rbx, 10
push rdx
mov rdx, 0
mul rbx
pop rdx
;mov rbx, rax
inc rsi
;mov rax, [rsi]
mov rbx, [rsi]
add rax, rbx
inc rsi
;hash
;mov rax, rbx
mov rbx, 100
push rdx
mov rdx, 0
mul rbx
pop rdx
;add rdx, rax
;mov rax, rdx
add rax, rdx
mov rdx, 0
mov rbx, 97
;push rdx
div rbx
;pop rdx
dec rcx
cmp rcx, 0x00
jnz hashloop
ret
ch2f:
mov rax, rdx
mov rdx, 0x00
mov rbx, 10
div rbx
add dl, '0'
add al, '0'
mov [ch2+0x01], dl
mov [ch2+0x00], al
ret