Extern
- 1. extern _printf, _scanf extern _printf, _scanf
segment .data segment .data
msj db "introducir cadena con caracteres:",0 ms1 db "Introducir el numero:",0,10
formato db "%d",0,10
msj2 db"el umero total de vocales a y u es:%d",0 ms2 db "El caudrado es : %d",0,10
formato db "%s" segment .bss
d dd 100 num resd 1
segment .bss segment .text
c resd 25 global _main
segment .text
_main:
global _main ;---------------------------------------
_main: push ms1
;--------------------------------------- call _printf
push msj add esp,4
call _printf
add esp,4 push num
push formato
push c call _scanf
push formato add esp,8
call _scanf
add esp,8 ;mov ecx,2
xor eax,eax
push c xor ebx,ebx
call cant push dword [num]
add esp,4
push esi call cuadrado
push msj2
call _printf ;..........subrutina...................
add esp,8 add esp,4
mov [num],eax
ret
;--------------------------------------- push dword [num]
;..........subrutina.................... push ms2
cant: call _printf
xor eax,eax add esp,8
xor ecx,ecx ret
xor edx,edx
xor esi,esi cuadrado: push ebp
push ebp mov ebp,esp
mov ebp,esp
mov ebx,[ebp+8] mov eax,[ebp+8]
ciclo: mov ebx,[ebp+8]
mov al,[ebx] mul ebx
cmp al,0x61
jz cont mov esp,ebp
cmp al,0x75 pop ebp
jz cont ret
back:
inc ebx
dec dword[d]
jnz ciclo
jmp fin
cont:
inc esi
jmp back
fin:
mov esp,ebp
pop ebp
ret