3.Include headers
Implementación de la impresión¶
Primera fase¶
El funcionamiento de las subrutias es mediante el envio de parametros, para que estos parametros sean enviados es necesario enviar los valores en la pila (en caso sea mas de un parametro), asi generamos PUSH y POP para enviar atributos.
Al realizar este programa, tendremos un problema cuando declaramos muchos problemas. en la siguiente parte:
msg1 db "Hola Arquitectura II!", 0AHmsg2 db "Reutilizando funciones...", 0AH`
El problema es que nunca hemos declarado donde está el caracter 0, ya que la función de stdio32 compara el byte con 0.
cmp byte[eax], 0
La solucion es agregar el caracter 0 al texto
msg1 db "Hola Arquitectura II!", 0AH, 0Hmsg2 db "Reutilizando funciones...", 0AH, 0H`

Segunda fase¶
Buscamos arreglar el programa de manera que se pueda imprimir con o sin salto de linea - Buscamos hacer impresiones - Imprimir con salto de linea - Imprimir sin salto de linea
El funconamiento del siguiente trozo de codigo
printStrLn:call printStr ; imprime el textopush eax ;mov eax, 0AH ;push eax ;mov eax, esp ; asigna a eax la direccion ESP stack pointercall printStr ; imprime el salto de lineapop eaxpop eaxret`
guarda la cadena en la pila | CADENA | POS | | --------- | -|
-> Agregamos una cadena | CADENA | POS | |-|-| | CAD1 | 1|
En este caso ESP -> CAD1
-> agregamos a la pila 0A | CADENA | POS | |-|-| | 0AH | 1| | CAD1 | 2|
En este caso ESP -> 0AH
Por eso movemos eax <- ESP, para que el metodo printStr jale el valor de la pila y envia eax como parametro