-
Notifications
You must be signed in to change notification settings - Fork 10
/
Parameters.s
31 lines (28 loc) · 985 Bytes
/
Parameters.s
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.section .data
output1:
.asciz "Hay %d parametros: \n"
output2:
.asciz "%s\n"
.section .text
.globl _start
_start:
movl (%esp), %ecx #Referencia del ESP en ECX para conocer el número de elementos insertados (parámetros)
pushl %ecx
pushl $output1
call printf
addl $4, %esp #Limpia la Stack del parámetro output1
popl %ecx #Extrae el valor del ECX de la Stack.
movl %esp, %ebp #EBP apuntará al ESP.
addl $4, %ebp #Sumamos 4 al EBP, ahora el EBP apunta al primer parámetro insertado en la Stack.
loop1:
pushl %ecx #Número de iteraciones (número de argumentos insertados en la stack)
pushl (%ebp) #Valor de una variable.
pushl $output2
call printf
addl $8, %esp #Limpia la Stack de argumentos los argumentos.
popl %ecx #Extrae de la Stack el valor del register ECX
addl $4, %ebp #Se mueve el register EBP a la siguiente variable del programa.
loop loop1
Finish:
pushl $0
call exit #Función Exit de C para finalizar el programa.