Está en la página 1de 6

Prctica 2 Interrupciones de DOS Nombre del alumno: ____________________________________________ Fecha de realizacin: _______________________ Introduccin Desde el punto de vista del

programador, las Interrupciones de Software son rutinas prefabricadas que nos proporcionan una primera abstraccin del hardware de la PC. Con ellas se pueden realizar operaciones bsicas de Entrada/Salida en bajo nivel. Para usarlas es necesario tener a la mano la informacin del fabricante para saber qu hace cada interrupcin, cules parmetros requiere y que informacin nos devuelve. Las interrupciones de DOS nos presentan una abstraccin un poco ms funcional del hardware. Generalmente son instrucciones que hace ms cosas que las interrupciones de BIOS. Objetivo En esta prctica se pretende conocer y aprender a utilizar algunas de las interrupciones del DOS. Actividades Sigue fielmente las instrucciones de esta prctica, contesta en este archivo de Word 1.- Captura el siguiente programa:
; Archivo: diasem.asm ; Este archivo despliega el dia de la semana de la fecha actual ; Utiliza la Interrupci de DOS Int 21h/2Ah ; -----------------------------------------------------------------segment pp stack resb 256 Segment Datos1 data Msje1 db Hoy es $ Dom db "domingo.$" Lun db "lunes.$" Mar db "martes.$" Mie db "miercoles.$" Jue db "jueves.$" Vie db "viernes.$" Sab db "sabado.$" segment dia code ..start: mov ax,Datos1 mov ds,ax mov dx, Msje1 mov ah,9 int 21h mov ah,2ah Int 21h cmp jne mov jmp Lunes: cmp jne mov jmp Martes: cmp jne al,0 Lunes dx,Dom desp al,1 Martes dx,Lun desp al,2 Miercoles

; Ajusta DS ;mueve el dato ax a ds perp es una instruccin ; Despliega Mensaje1 ;mueve el nueve ; Obtiene la fecha actual

; Si AL = 0, compara si al (dia)es = a 0. ;salta si es diferente de lunes. ; Despliega "Domingo" ;salta a la instruccin desp. ; Si AL = 1, compara si al (dia)es = a 1. ;salta si es diferente de martes. ; Despliega "Lunes" ;salta a la instruccin desp. ; Si AL = 2, compara si al(dia) es = a 2. ;salta si es diferente de miercoles

mov dx,Mar jmp desp Miercoles: cmp al,3 jne Jueves mov dx,Mie jmp desp Jueves: cmp al,4 jne Viernes mov dx,Jue jmp desp Viernes: cmp al,5 a 5. jne Sabado mov dx,Vie jmp desp Sabado: mov dx,Sab desp: mov ah,9 int 21h Fin: mov ax,4c00h int 21h

; Despliega "Martes" ; salta a la instruccin desp. ; Si AL = 3, compara si al(dia) es = a 3. ;salta si es diferente de jueves ; Despliega "Miercoles" ;salta a la instruccin desp. ; Si AL = 4, compara si al(dia) es = a 4. ;salta si la instruccin es diferente de viernes. ; Despliega "Jueves" ;salta a la instruccin desp. ; Si AL = 5 ,compara si al (dia) compara si al es =

; salta si es diferente de sbado. ; Despliega "Viernes" ;salta a la instruccin desp. ; Despliega "Sabado"

;obtiene el dia de la semana. ;invoca a las interrupciones del sistema. ; Termina ; ;invoca a las interrupciones del sistema.

1.1.- Utilizando la siguiente referencia: http://heim.ifi.uio.no/~stanisls/helppc/idx_interrupt.html , llena la tabla siguiente: Interrupcin Int 21,2a Descripcin Obtiene la fecha actual Parmetros de entrada AH = 2AH Regresa AL = Dia de la semana CX = Ao (1980..2099) DH = Mes DL = Dia (1..31)
DS:DX -> CADENA$

Int 21,9 Int 21,4C

Despliega una cadena de Ah = 9 datos Termina la ejecucin Ah=4ch

1.2.- Ensamblado y ligado del programa. Comando para ensamblado: __________________nasm______________________ Comando para ligado: ___________________________alink__________________ 1.3.- Ensambla, liga el programa anterior y obtn los siguientes datos de los archivos generados: Archivo diasem.asm diasem.obj diasem.exe Tamao 2 KB 1 KB 1 KB Fecha y Hora 25/04/11 7:49 pm 25/04/11 7:50 pm 25/04/11 7:50 pm

1.4.- Ejecta el programa y comenta brevemente sobre su ejecucin: El programa lo nico que regresa es una leyenda donde da a conocer despus que obtiene la fecha actual, el dia de la semana en la que se ejecuta el programa. _____________________________________________________________________________ _____________________________________________________________________________

_____________________________________________________________________________ 2.- Captura, ensambla, liga y depura, si es necesario, el programa que despliega, en base al da del mes, un mensaje indicando si estamos en la primera o en la segunda quincena.
; Archivo: quincena.asm ; Despliega en que quincena estamos, de acuerdo a la fecha actual

2.1 Pega aqui el cdigo, ya depurado, del programa.


; Archivo: diasem.asm ; Este archivo despliega el dia de la semana de la fecha actual ; Utiliza la Interrupci de DOS Int 21h/2Ah ; -----------------------------------------------------------------segment pp stack resb 256 Segment Datos1 data Msje1 db "Estamos en la primera quincena$" Msje2 db "Estamos en la segunda quincena$" segment dia code ..start: mov ax,Datos1 mov ds,ax mov ah,2ah Int 21h cmp dl,16 ; jnge primera mov dx,Msje2 ; jmp desp primera: mov dx,Msje1 ; jmp desp desp: mov ah,9 int 21h Fin: mov ax,4c00h int 21h ; Termina

; Ajusta DS ; Obtiene la fecha actual

Si dl = 16 Despliega "Segunda quincena" Despliega "Primera quincena"

2.2.- Ensamblado y ligado del programa. Comando para ensamblado: nasm f obj Comando para ligado: a link c:\nasm\fuentes\quincena.obj 2.3.- Ensambla, liga el programa anterior y obtn los siguientes datos de los archivos generados: Archivo quincena.asm quincena.obj quincena.exe Tamao 742 bytes 252 bytes 453 bytes Fecha y Hora 26/04/11 6:13 pm 26/04/11 6:14 pm 26/04/11 6:14 pm

2.4.- Ejecuta el programa y comenta brevemente sobre su ejecucin: El programa pide y guarda la fecha actual en un registro y dependiendo el dia en el que se encuentre el sistema es el mensaje que regresa, si el numero de dia es mayor a 16 escribe segunda quincena, sino primera.

3.- Programa estacion.asm Ahora escribe un programa que lea la fecha del sistema e indique en que estacin del ao estamos. Toma como fechas de inicio de cada estacin las fechas mostradas abajo: Fecha de inicio 21-Marzo 21-Junio 23-Septiembre 21-Diciembre Estacin del ao Primavera Verano Otoo Invierno

3.1 Pega aqui el cdigo del programa. segment pp stack resb 256 segment Datos1 data Msje1 db "hoy estamos en la estacion de: $" prim db "Primavera.$" vera db "Verano.$" oton db "Otonio.$" invi db "Invierno.$" segment estac code ..start: mov ax,Datos1 mov ds,ax mov dx,Msje1 mov ah,9 int 21h

; Iniciamos DS ; Muestra Msj1

mov ah,2ah ;Obtiene la Fecha del sistema int 21h cmp dh,0 jne enero mov dx,invi jmp desp cmp dh,0 jne enero mov dx,invi jmp desp enero: cmp dh,1 jne febrero mov dx,invi jmp desp febrero: cmp dh,2 jne marzo

mov dx,invi jmp desp marzo: cmp dh,3 jne abril cmp dl,21 jmp invierno mov dx,prim jmp desp abril: cmp dh,4 jne mayo mov dx,prim jmp desp mayo: cmp dh,5 jne junio mov dx,prim jmp desp junio: cmp dh,6 jne julio cmp dl,21 jmp primavera mov dx,vera jmp desp julio: cmp dh,7 jne agosto mov dx,vera jmp desp agosto: cmp dh,8 jne septiembre mov dx,vera jmp desp septiembre: cmp dh,9 jne octubre cmp dl,23 jmp verano mov dx,oton jmp desp octubre: cmp dh,10 jne noviembre mov dx,oton jmp desp noviembre: cmp dh,11 jne diciembre mov dx,oton jmp desp diciembre:

cmp dl,21 jmp otonio mov dx,invi jmp desp invierno: mov dx,invi jmp desp primavera: mov dx,prim jmp desp verano: mov dx,vera jmp desp otonio: mov dx,oton jmp desp desp: mov ah,9 int 21h mov ax,4c00h ; fin int 21h 3.2.- Ensamblado y ligado del programa. Comando para ensamblado: nasm f obj c:/nasm/fuentes/estaciones.asm Comando para ligado: alink c:/nasm/fuentes/estaciones.obj 3.3.- Ensambla, liga el programa anterior y obtn los siguientes datos de los archivos generados:

Archivo
estacion.asm estacion.obj estacion.exe

Tamao 1.47 KB 518 bytes 638 bytes

Fecha y Hora 26/04/11 5:53 pm 26/04/11 5:58 pm 26/04/11 5:58 pm

3.4.- Ejecuta el programa y comenta brevemente sobre su ejecucin: El programa pide y guarda la fecha que pide y compara la fecha obtenida y dependiendo la fecha es el nombre de la estacin que regresa. 4.- Comentarios y conclusiones Me gusto la prctica por que aprendi que el comando mov ah,2ah obtiene la fecha del sistema y la guarda donde nosotros le digamos.

También podría gustarte