extern io_get_dec
extern io_print_dec
extern io_print_char
section .bss
k resd 1
n resd 1
a resd 1
dig resd 1
cnt resd 1
res resd 1
section .text
global main
next:
mov eax, [res]
mov ebx, 2011
mov edx, 0
div ebx
mov eax, edx
mov ecx, [cnt]
cmp ecx, [n]
je finish
imul eax, eax
;res = 0
;while d > 0
;dig = d % k
;res = res * k + dig
mov dword [res], 0
inc dword [cnt]
dog:
test eax, eax
jz next
mov ebx, [k]
mov edx, 0
div ebx
mov [dig], edx
mov ecx, [res]
imul ecx, [k]
add ecx, [dig]
mov [res], ecx
jmp dog
main:
call io_get_dec
mov [k], eax
call io_get_dec
mov [n], eax
call io_get_dec
mov [a], eax
mov dword [cnt], 0
mov [res], eax
jmp next
finish:
call io_print_dec
mov eax, eax
ret