section .data
global _start
char db ' '
value1 dw 2
value2 dw 3
section .text
_start:
mov eax, [value1]
mov ebx, [value2]
mov ecx, 0
call multiply
call draw
call linefeed
call exit
multiply:
;; add registers ax to bx.
add ecx, eax
dec ebx
cmp ebx, 0
jne multiply
ret
draw:
;; draw a number of dots to represent the
;; answer to the addition.
call dot
dec ecx
cmp ecx, 0
jne draw
ret
exit:
mov eax,1
mov ebx,0
int 80h
ret
linefeed:
mov [char], byte 10
call pr_char
ret
dot:
mov [char], byte '.'
call pr_char
ret
pr_char:
push eax
push ebx
push ecx
push edx
mov eax,4
mov ebx,1
mov ecx, char
mov edx,1
int 80h
pop edx
pop ecx
pop ebx
pop eax
ret