;%include "io.mac"
section .data
hello db 'Hello World!'
section .text
global _start
_start:
;GetLInt eax
;GetLInt ebx
mov eax,5
mov ebx,10
push eax
push ebx
mov ebx,esp
mov eax,esp
add eax,4
push ebx
push eax
call multi
pop ebx
pop ebx
;PutLInt eax
push eax
mov eax,4
mov ebx,1
mov ecx,ebp
mov edx,1
end: mov eax,1
mov ebx,0
int 80h;
%define a1 dword [ebp+8]
%define a2 dword [ebp+12]
soma:enter 0,0
mov eax,a1
add eax,a2
leave
ret
%define mres dword[ebp-12]
%define mcount dword[ebp-8]
%define mbase dword[ebp-4]
multi:enter 12,0
mov eax,a2
mov mcount,eax ; Empilhando o contador utilizado nas multiplicações
mov eax,ebp
sub eax,8 ; eax = ebp - 8 (endereço de a1)
mov mbase,eax ; Empilhando endereço da base
mov eax,0
mov mres,eax ; Empilhando total
loopmul:mov ecx,mcount
mov ecx,mcount
cmp ecx,0
jle retmult
sub ecx,1
mov mcount,ecx ; atualizando contador
push mbase
push mbase
;call soma
pop ebx
pop ebx ; Descartando os valores originais
add eax,mres ; Somando ao resultado
mov mres,eax
mov eax,4
mov ebx,1
mov ecx,hello
mov edx,12
int 80h
jmp loopmul
retmult: mov eax,4
mov ebx,1
mov ecx,hello
mov edx,12
int 80h
mov eax,mres
leave
ret
OyVpbmNsdWRlICJpby5tYWMiCnNlY3Rpb24gLmRhdGEKaGVsbG8gZGIgJ0hlbGxvIFdvcmxkIScKCnNlY3Rpb24gLnRleHQKCWdsb2JhbCBfc3RhcnQKCl9zdGFydDoKCTtHZXRMSW50IGVheAoJO0dldExJbnQgZWJ4Cgltb3YgZWF4LDUKCW1vdiBlYngsMTAKCglwdXNoIGVheAoJcHVzaCBlYngKCQoJbW92IGVieCxlc3AgCgltb3YgZWF4LGVzcCAKCWFkZCBlYXgsNAoJCglwdXNoIGVieAoJcHVzaCBlYXgKCQoJY2FsbCBtdWx0aQoJCglwb3AgZWJ4Cglwb3AgZWJ4CgkKCTtQdXRMSW50IGVheAoJcHVzaCBlYXggICAgICAgICAKCW1vdiBlYXgsNAoJbW92IGVieCwxIAoJbW92IGVjeCxlYnAgCgltb3YgZWR4LDEKCQplbmQ6IG1vdiBlYXgsMSAgICAgICAgICAgIAoJbW92IGVieCwwICAgICAgICAgICAgCglpbnQgODBoOwoJCgklZGVmaW5lIGExIGR3b3JkIFtlYnArOF0KCSVkZWZpbmUgYTIgZHdvcmQgW2VicCsxMl0KCQoJc29tYTplbnRlciAwLDAKCW1vdiBlYXgsYTEKCWFkZCBlYXgsYTIKCWxlYXZlCglyZXQKCiAgJWRlZmluZSBtcmVzIGR3b3JkW2VicC0xMl0KICAlZGVmaW5lIG1jb3VudCBkd29yZFtlYnAtOF0KICAlZGVmaW5lIG1iYXNlIGR3b3JkW2VicC00XQogICAgCgltdWx0aTplbnRlciAxMiwwCgkKCQoJbW92IGVheCxhMgoJbW92IG1jb3VudCxlYXggOyBFbXBpbGhhbmRvIG8gY29udGFkb3IgdXRpbGl6YWRvIG5hcyBtdWx0aXBsaWNhw6fDtWVzCgltb3YgZWF4LGVicCAKCXN1YiBlYXgsOCAgICAgOyBlYXggPSBlYnAgLSA4IChlbmRlcmXDp28gZGUgYTEpCgltb3YgbWJhc2UsZWF4IDsgRW1waWxoYW5kbyBlbmRlcmXDp28gZGEgYmFzZSAKCW1vdiBlYXgsMAoJbW92IG1yZXMsZWF4ICA7IEVtcGlsaGFuZG8gIHRvdGFsCgpsb29wbXVsOm1vdiBlY3gsbWNvdW50CgkKCW1vdiBlY3gsbWNvdW50CiAgICBjbXAgZWN4LDAgCglqbGUgcmV0bXVsdAoJCglzdWIgZWN4LDEgCgkKCW1vdiBtY291bnQsZWN4ICA7IGF0dWFsaXphbmRvIGNvbnRhZG9yCglwdXNoIG1iYXNlCglwdXNoIG1iYXNlIAoKCTtjYWxsIHNvbWEKCQoJcG9wIGVieAoJcG9wIGVieCA7IERlc2NhcnRhbmRvIG9zIHZhbG9yZXMgb3JpZ2luYWlzCglhZGQgZWF4LG1yZXMgIDsgU29tYW5kbyBhbyByZXN1bHRhZG8KCW1vdiBtcmVzLGVheAoJCgltb3YgZWF4LDQKCW1vdiBlYngsMSAKCW1vdiBlY3gsaGVsbG8gCgltb3YgZWR4LDEyCglpbnQgODBoCgkKCWptcCBsb29wbXVsCgkKCXJldG11bHQ6CW1vdiBlYXgsNAoJbW92IGVieCwxIAoJbW92IGVjeCxoZWxsbyAKCW1vdiBlZHgsMTIKCWludCA4MGgKCQoJbW92IGVheCxtcmVzCglsZWF2ZQoJcmV0