Skip to content

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`

docs/0-RES/arqui/1/NASM/2.include/v4/hola-v4-include.asm

docs/0-RES/arqui/1/NASM/2.include/v4/stdio32.asm

docs/0-RES/arqui/1/screenshot/Pasted-image-20230310112331.png

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 docs/0-RES/arqui/1/NASM/2.include/v5/hola-v4-include-1.asm

docs/0-RES/arqui/1/NASM/2.include/v5/stdio32-1.asm