Documentos de Académico
Documentos de Profesional
Documentos de Cultura
LIBRERÍA IRVINE32
1
Objetivo
El objetivo de esta práctica es investigar e implementar 8 ejercicios utilizando diferentes
procedimientos incluidos en la libreria Irvine32.
Desarrollo
Para comenzar, creamos un proyecto vacío en Visual Studio:
2
Dentro del proyecto, dando click en la solución habilitamos las dependencias necesarias:
3
Ahora accedemos a las propiedades del archivo:
4
Revisamos que el tipo de elemento esté marcado como “Microsoft Macro Assembler”:
Ahora se procede a añadir la librería Irvine para trabajar con ciertas herramientas de la misma,
para ello descargamos el archivo del siguiente enlace:
http://asmirvine.com/gettingStartedVS2019/index.htm
Una vez descargado el archivo, lo ubicamos en el disco C, quedando la ruta como C:\Irvine, como
se muestra a continuación:
5
El siguiente paso es realizar la configuración en Visual Studio para incluir la librería al proyecto,
para ello accedemos a las propiedades de la solución:
6
Posteriormente en el apartado de Vinculador > General, se agrega el path en:
7
Código
A continuación, se presenta el código a utilizar:
.code
; Ejemplo1: Crear un archivo de nombre con lo que hay en edx
mov edx, offset filename ;El parámetro requerido es el nombre del archivo
almacenado como variable en el registro edx
call CreateOutputFile
.code
; Ejemplo2: Obtener el numero de columnas y filas de la consola
call GetMaxXY ;No requiere parámetros
mov rows, dh
mov cols, dl
8
Ejemplo 3: Mover el puntero de consola a una posición determinada
.code
; Ejemplo3: Mover el puntero de consola a una posicion determinada
mov dh, 20
mov dl, 20
call Gotoxy ;Requiere 2 parámetros: el valor de x almacenado en el
registro dl y el parámetro y almacenado en dh.
20
20
9
Ejemplo 5: Obtener el número de caracteres de un string
.data
buffer byte "abcdefg", 0
bufLength dword ?
; Ejemplo5: Obtener el tamaño de un string
INVOKE Str_length, ADDR buffer ;El procedimiento requiere la cadena
mov bufLength, eax ;El tamaño se almacena en eax
10
Al presentar por pantalla el valor de ambas variables, dichos valores ahora son equivalentes.
Al presentar por pantalla la cadena, antes de hacer la conversión, sus caracteres son minúsculas,
después de la conversión, serán mayúsculas.
11
Código completo
TITLE Ejemplos de procedimientos con Irvine32
include Irvine32.inc
.data
filename byte "archivo.txt", 0
rows byte ?
cols byte ?
ranNum DWORD ?
12
; Ejemplo7: Copia una cadena de una variable a otra
;INVOKE Str_copy,
; ADDR source,
; ADDR target ;Requiere 2 params. La variable fuente y destino
;mov edx,OFFSET source
;call WriteString
;mov edx,OFFSET target
;call WriteString
ret
main endp
end main
13
Conclusión
Al realizar esta práctica se comprendieron algunos procedimientos que incluye la librería Irvine32,
los cuales se explican a continuación.
Ejemplo1: En este ejercicio se usa el procedimiento CreateOutputFile para crear un archivo con el
valor string que tenga la variable que se pase por parámetro en el registro edx.
Ejemplo2: En este ejercicio se usa el procedimiento GetMaxXY para obtener el número de filas y
columnas de la ventana de consola, no necesita parámetros.
Ejemplo 3: En este ejercicio se usa el procedimiento GoToXY para reubicar el puntero de la consola
a una posición determinada, se requieren 2 parámetros: el valor de ‘X’ almacenado en el registro
dl y el parámetro ‘Y’ almacenado en dh.
Ejemplo 6: En este ejercicio se usa el procedimiento Delay para detener la ejecución durante ‘n’
milisegundos, este único parámetro se almacenará en eax.
Ejemplo 7: En este ejercicio se usa el procedimiento Str_copy, el cual copia el valor del string de
una variable a otra, se ocupan dos parámetros, la variable fuente y la variable destino,
especificadas después de la directica ADDR source, ADDR target.
Ejemplo 8: En este ejercicio se usa el procedimiento Str_ucase el cual transforma una cadena de
minúsculas a mayúsculas, necesita un solo parámetro: la cadena a convertir, el cual se especifica
des pues de la directiva ADDR source.
Fue muy interesante conocer los procedimientos que ofrece la librería irvine32, se realizaron
varias búsquedas en internet adicionales, ya que la documentación oficial de la librería Irvine está
incompleta o desactualizada, sin embargo, conocí las dos formas de llamar a los procedimientos
las cuales se hacen mediante CALL e INVOKE, en esta última se pueden especificar los parámetros
que recibirá el procedimiento mediante ADDR.
14