Macros en ensamblador

Solo disponible en BuenasTareas
  • Páginas : 23 (5520 palabras )
  • Descarga(s) : 0
  • Publicado : 22 de marzo de 2011
Leer documento completo
Vista previa del texto
LENGUAJE ENSAMBLADOR 80386 PRÁCTICA 9
AUTOR: PROFESOR SALVADO SAUCEDO FLORES
EDICIÓN: PROFESOR PABLO FUENTES RAMOS 9-1
PRÁCTICA 9
USO DE MACROS, EMPLEO DE ARCHIVOS DE CONFIGURACIÓN
E IMPLEMENTACIÓN DE ATRIBUTOS DE COLOR DE VÍDEO
1. INTRODUCCIÓN
Esta práctica ayudará a familiarizarse con el uso de macros, el empleo de archivos de
configuración, la implementación de diferentes atributos decolor en el modo alfanumérico de
video. Presenta las funciones de DOS en forma de macros. Rutinas que acceden de modo
directo a la RAM de video.
2 OBJETIVOS
2.1 El alumno aprenderá a usar la directiva INCLUDE, que permite que un archivo
con datos, rutinas o macros sea procesado por TASM junto con el archivo que
contiene el programa.
2.2 Aprenderá a usar archivos que contengan parámetros deoperación de un
programa, que éste usa en el momento de su ejecución.
2.3 Aprenderá a generar y ensamblar algunos macros relacionados con la
interrupción 21h, para llamar a DOS.
3 DESARROLLO
3.1 Capturar, sin ensamblar, el siguiente módulo con el nombre MACDOS.ASM.
%NOLIST
IDEAL
; Subconjunto de macros de funciones de DOS (modo IDEAL)
;LLDOS LLAMA CUALQUIER FUNCIÓN DE DOS
;
;Entrada:NumeroFuncion = número de función de DOS
;Salida: Depende de la función específica
;Registros: Depende de la función específica
LENGUAJE ENSAMBLADOR 80386 PRÁCTICA 9
AUTOR: PROFESOR SALVADO SAUCEDO FLORES
EDICIÓN: PROFESOR PABLO FUENTES RAMOS 9-2
MACRO LLDOS NumeroFuncion
mov ah,NumeroFuncion ;Asigna número de función
in 21h ;Llama a DOS
ENDM LLDOS
;D_TraeCar TRAE CARÁCTER DEL TECLADO CONECO ESPERA (01h)
;
;Entrada: Ninguna
;Salida: AL = siguiente carácter de la entrada estándar
;Registros: AX
MACRO D_TraeCar
mov ah,1 ;Asigna número de función
int 21h
ENDM D_TraeCar
MACRO D_SacaCar
mov ah,2
int 21h
ENDM D_SacaCar
MACRO D_ImprCar
mov ah,5
int 21h
ENDM D_ImprCar
MACRO D_TraeCarC
mov ah,7
int 21h
ENDM D_TareCarC
;D_SacaCar ESCRIBE UN CARÁCTER A LA SALIDA ESTÁNDAR(02h)
;
;Entrada: DL = ASCII del carácter (0...225) a sacar
;Salida: Ninguna
;Registros: AH
;D_ImprCar ENVÍA CARÁCTER A DISPOSITIVO DE LISTADOS (05h)
;
;Entrada: DL = ASCII del carácter (0...225)
;Salida: Ninguna
;Registros: AH
;D_TraeCarC TRAE CARÁCTER SIN FILTRAJE Y SIN ECO (07h)
;
;Entrada: Ninguna
;Salida: AL = siguiente carácter de la entrada estándar
;Registros: AX;D_TraeCarSE TRAE CARÁCTER FILTRADO SIN ECO (08h)
;
;Entrada: Ninguna
;Salida: AL = siguiente carácter de la entrada estándar
;Registros: AX
LENGUAJE ENSAMBLADOR 80386 PRÁCTICA 9
AUTOR: PROFESOR SALVADO SAUCEDO FLORES
EDICIÓN: PROFESOR PABLO FUENTES RAMOS 9-3
MACRO D_TraeCarSE
mov ah,8
int 21h
ENDM D_TraeCaeSE
MACRO D_SacaCadena cadena
mov ah,9
mov dx,offset cadena
int 21h
ENDM D_SacaCadenaMACRO D_EsperaTecla
mov ah,0Bh
int 21h
or al,al ;pone / limpia ZF
ENDM D_EsperaTecla
MACRO D_FijaDrive
mov ah,0Eh
int 21h
ENDM D_FijaDrive
MACRO D_TraeDrive
mov ah,19h
int 19h
ENDM D_TraeDrive
;D_SacaCadena ESCRIBE CADENA ASCII A LA SALIDA ESTÁNDAR (09h)
;
;Entrada: cadena = etiqueta de variable ASCII
;Salida: Ninguna
;Registros: AH, DX
;D_EsperaTecla VERIFICA SI UNA TECLAOPRIMIDA ESTÁ ESPERANDO (0Bh)
;
;Entrada: Ninguna
;Salida: ZF = 0 si un carácter está esperando, ZF = 1, si no
;Registros: AX
;D_FijaDrive CAMBIA EL DRIVE ACTUAL (0Eh)
;
;Entrada: DL = número de drive (0 = A:, 1 = B:, 2 = C:, etc.)
;Salida: AL = número de drives disponibles
;Registros: AX
;D_TraeDrive TRAE NÚMERO DE DRIVE ACTUAL (19h)
;
;Entrada: Ninguna
;Salida: AL = número de drive (0 =A:, 1 = B:, 2 = C:, etc.)
;Registros: AX
LENGUAJE ENSAMBLADOR 80386 PRÁCTICA 9
AUTOR: PROFESOR SALVADO SAUCEDO FLORES
EDICIÓN: PROFESOR PABLO FUENTES RAMOS 9-4
MACRO D_FijaDTA nuevoDTA
mov ah,1Ah
mov dx,offset nuevoDTA
int 21h
ENDM D_FijaDTA
MACRO D_FijaVector numero,direccion
push ds ;salva registro DS actual
mov ax,SEG dirección ;asigna el segmento de la direcmov
ds,ax ;ción de...
tracking img