Cmos Programas Residentes y Manejo de Interrupciones

35
1 Lab. Arquitectura de computadoras CMOS ÍNDICE 1 ¨PROGRAMAS RESIDENTES TIPEADOS DE LOS TEXTOS ESPECIALIZADOS EN ALGÚN LENGUAJE PEQUEÑO PORTABLE (ASEMBLER, BASIC, C STD, PASCAL, ETC)...................................................2 1.1 Programa Residente en Memoria...........................2 1.2 PROGRAMAS:.............................................. 2 1.2.1 1º Primer Programa...................................2 1.2.2 2º Segundo Programa..................................3 2 Dirección base del reloj de tiempo real de la PC y realizar un programa para poder tener acceso a dicho reloj en lectura y escritura......................................................4 2.1 EL RELOJ DE TIEMPO REAL.................................4 2.2 LAS FUNCIONES DE RELOJ..................................6 2.3 REGISTROS DE ESTADO.....................................7 2.3.1 REGISTRO A...........................................7 2.3.2 REGISTRO B...........................................7 2.3.3 REGISTRO C...........................................7 2.3.4 REGISTRO D...........................................8 2.3.5 PROGRAMA DE RELOJ RESIDENTE EN TIEMPO REAL...........8 3 PROGRAMAR ALARMAS DE ACUERDO AL USO DEL RELOJ DE TIEMPO REAL DE LA PC......................................................12 4 INTERRUPCIONES POR HARDWARE USADAS EN LA PC CUALES ESTÁN OCUPADAS Y CUALES DISPONIBLES.................................12 4.1 INTERRUPCIONES INTERNAS DE HARDWARE:...................12 4.2 INTERRUPCIONES EXTERNAS DE HARDWARE:...................12 4.3 INTERRUPCIONES DE HARDWARE:............................12 5 DESCRIBIR EL PROCEDIMIENTO PARA ACCEDER A UNA INTERRUPCIÓN.13 5.1 HARDWARE DE LOS IRQ:...................................13 5.2 ASIGNACIÓN DE LOS IRQ PARA EQUIPOS AT:.................14 6 INTERRUPCIONES POR SOFTWARE USADAS EN LA PC CUALES ESTÁN OCUPADAS Y CUALES DISPONIBLES.................................16 6.1 INTERRUPCIONES DE SOFTWARE:............................16 7 DISEÑO DE UN SISTEMA DE FORMA QUE PODAMOS PROBAR LAS INTERRUPCIONES DE AMBOS TIPOS . TRAER PROGRAMA PROBADO FUENTE Y COMPILADO.....................................................17

description

Cmos Programas Residentes y Manejo de Interrupciones

Transcript of Cmos Programas Residentes y Manejo de Interrupciones

Lab. Arquitectura de computadoras CMOSNDICE

1PROGRAMAS RESIDENTES TIPEADOS DE LOS TEXTOS ESPECIALIZADOS EN ALGN LENGUAJE PEQUEO PORTABLE (ASEMBLER, BASIC, C STD, PASCAL, ETC)21.1Programa Residente en Memoria21.2PROGRAMAS:21.2.11 Primer Programa21.2.22 Segundo Programa32Direccin base del reloj de tiempo real de la PC y realizar un programa para poder tener acceso a dicho reloj en lectura y escritura.42.1EL RELOJ DE TIEMPO REAL42.2LAS FUNCIONES DE RELOJ62.3REGISTROS DE ESTADO72.3.1REGISTRO A72.3.2REGISTRO B72.3.3REGISTRO C72.3.4REGISTRO D82.3.5PROGRAMA DE RELOJ RESIDENTE EN TIEMPO REAL83PROGRAMAR ALARMAS DE ACUERDO AL USO DEL RELOJ DE TIEMPO REAL DE LA PC.124INTERRUPCIONES POR HARDWARE USADAS EN LA PC CUALES ESTN OCUPADAS Y CUALES DISPONIBLES.124.1INTERRUPCIONES INTERNAS DE HARDWARE:124.2INTERRUPCIONES EXTERNAS DE HARDWARE:124.3INTERRUPCIONES DE HARDWARE:125DESCRIBIR EL PROCEDIMIENTO PARA ACCEDER A UNA INTERRUPCIN.135.1HARDWARE DE LOS IRQ:135.2ASIGNACIN DE LOS IRQ PARA EQUIPOS AT:146INTERRUPCIONES POR SOFTWARE USADAS EN LA PC CUALES ESTN OCUPADAS Y CUALES DISPONIBLES.166.1INTERRUPCIONES DE SOFTWARE:167DISEO DE UN SISTEMA DE FORMA QUE PODAMOS PROBAR LAS INTERRUPCIONES DE AMBOS TIPOS . TRAER PROGRAMA PROBADO FUENTE Y COMPILADO178EL SETUP DE LA PC, LAS OPCIONES DE CONFIGURACIN Y LOS PARMETROS.238.1BIOS SETUP238.2STANDARD CMOS SETUP248.3ADVANCED CMOS SETUP258.4ADVANCED CHIPSET SETUP258.5POWER MANAGEMENT SETUP269BIBLIOGRAFIA27

CMOS PROGRAMAS RESIDENTES Y MANEJO DE INTERRUPCIONES.PROGRAMAS RESIDENTES TIPEADOS DE LOS TEXTOS ESPECIALIZADOS EN ALGN LENGUAJE PEQUEO PORTABLE (ASEMBLER, BASIC, C STD, PASCAL, ETC)Programa Residente en MemoriaUn programa residente o TSR ( Terminate and Stay Resident )es un programa normal y corriente que, tras ser cargado, permanece parcial o totalmente en memoria al finalizar su ejecucin. Ello es posible utilizando una funcin especfica del sistema operativo. Los programas residentes pueden ser activados mediante una combinacin de teclas o bien actuar con cierta periodicidad, asociados a la interrupcin del temporizador. Tambin pueden interceptar funciones del DOS o de la BIOS para cambiar o modificar su funcionamiento. Al final, casi siempre resulta totalmente inevitable desviar alguna interrupcin hacia una nueva rutina que la gestione, con objeto de activar el programa residentePROGRAMAS:1 Primer Programa

Este primer programa en C colocar de manera perpetua mi nombre Lab. Arquitectura haciendo un pseudoscroll horizontal en la esquina superior derecha.#include #include

extern unsigned _heaplen=1024;extern unsigned _stklen=512;

void interrupt (*OldTic)(void);void KillTic(void);

void interrupt Tic(){ unsigned int (far *pantalla)[80]; static int prueba=0; int i; static char cad[24] = "LABORATORIO ARQUITECTURA";

pantalla = MK_FP(0xb800,0); for(i=55;i 40h:6Ch MOV AX,40H MOV ES,AX MOV SI,6CH MOV AX,ES:[SI] MOV DX,ES:[SI+2] MOV BX,32771 DIV BX SHR AX,1 MOV CH,AL MOV AX,DX MOV DX,0 MOV BX,1092 DIV BX MOV CL,AL MOV AX,DX MOV DX,0 MOV BX,18 DIV BX MOV DH,AL MOV BH,10 MOV AH,0 MOV AL,CH DIV BH ADD AX,3030H MOV WORD PTR HORA,AX MOV HORA+2,':' MOV AH,0 MOV AL,CL DIV BH ADD AX,3030H MOV WORD PTR HORA+3,AX MOV HORA+5,':' MOV AH,0 MOV AL,DH DIV BH ADD AX,3030H MOV WORD PTR HORA+6,AX MOV HORA+8,':' MOV AH,0 MOV AL,DL DIV BH ADD AX,3030H MOV WORD PTR HORA+9,AX MOV AX,PANTALLA MOV ES,AX MOV DI,2*(80-11) MOV CX,11 MOV SI,0ALE: MOV AL,HORA[SI] MOV ES:[DI],AL INC DI MOV BYTE PTR ES:[DI],31 INC SI INC DI DEC CX CMP CX,0 JNZ ALE:FIN: POP ES POP DS POP DI POP SI POP DX POP CX POP BX POP AX STI IRETRELOJ ENDPINSTALAR PROC MOV AX,0000H MOV ES,AX MOV BX,01CH*004H CLI MOV WORD PTR ES:[BX],OFFSET RELOJ MOV WORD PTR ES:[BX+2],CS MOV DX,OFFSET INSTALAR STI INT 27HINSTALAR ENDPCODIGO ENDS END INICIO

;PROGRAMA DE RELOJ RESIDENTE ;SEGMENTO MEMORIA DE PANTALLA VGAPANTALLA EQU 0B800H;SEGEMENTO PRINCIPAL

CODIGO SEGMENT ASSUME CS:CODIGO,DS:CODIGO ORG 100H ; ORIGEN POR SER FICHERO TIPO COM

INICIO: JMP INSTALAR

; VARIABLES DEFINIDAS

HORA DB 35 DUP('?')

RELOJ PROC CLI PUSH AX PUSH BX PUSH CX PUSH DX PUSH SI PUSH DI PUSH DS PUSH ES

;OBTENEMOS LA HORA DE LA DIRECCION -------> 40h:6Ch (INFERIOR); 40h:6eh (SUPERIOR)

MOV AX,40H MOV ES,AX MOV SI,6CH MOV AX,ES:[SI] MOV DX,ES:[SI+2] MOV BX,32771 DIV BX SHR AX,1 MOV CH,AL

MOV AX,DX MOV DX,0 MOV BX,1092 DIV BX MOV CL,AL

MOV AX,DX MOV DX,0 MOV BX,18 DIV BX MOV DH,AL

MOV HORA,'F' MOV HORA+1,'E' MOV HORA+2,'R' MOV HORA+3,'D' MOV HORA+4,'I' MOV HORA+5,'N' MOV HORA+6,'A' MOV HORA+7,'N' MOV HORA+8,'D' MOV HORA+9,' ' MOV HORA+10,'C' MOV HORA+11,'O' MOV HORA+12,'N' MOV HORA+13,'D' MOV HORA+14,'O' MOV HORA+15,'R' MOV HORA+16,'I' MOV HORA+17,' ' MOV BH,10 MOV AH,0 MOV AL,CH DIV BH ADD AX,3030H MOV WORD PTR HORA+18,AX MOV HORA+20,':'

MOV AH,0 MOV AL,CL DIV BH ADD AX,3030H MOV WORD PTR HORA+21,AX MOV HORA+23,':'

MOV AH,0 MOV AL,DH DIV BH ADD AX,3030H MOV WORD PTR HORA+24,AX MOV HORA+26,':'

MOV AH,0 MOV AL,DL DIV BH ADD AX,3030H MOV WORD PTR HORA+27,AX

; DIRECCIONA ZONA DE MEMORIA DE LA PANTALLA

MOV AX,PANTALLA MOV ES,AX MOV DI,2*(80-31) ; cambiar con el tamao de la cadena

MOV CX,31 ; cambiar MOV SI,0

MOVER: MOV AL,HORA[SI] MOV ES:[DI],AL INC DI MOV BYTE PTR ES:[DI],31H INC SI INC DI LOOP MOVERFIN: POP ES POP DS POP DI POP SI POP DX POP CX POP BX POP AX STI IRETRELOJ ENDP

INSTALAR PROC MOV AX,0000H MOV ES,AX MOV BX,01CH*004H CLI MOV WORD PTR ES:[BX],OFFSET RELOJ MOV WORD PTR ES:[BX+2],CS MOV DX,OFFSET INSTALAR STI INT 27HINSTALAR ENDPCODIGO ENDS END INICIOPROGRAMAR ALARMAS DE ACUERDO AL USO DEL RELOJ DE TIEMPO REAL DE LA PC. Existen muchas aplicaciones posibles que podra hacer uso del reloj de tiempo real de la PC. Por ejemplo, se podra trabajar con la hora para chequear algn dispositivo, mantener un contador interno para realizar algo cuando alcance cierto valor, etc.INTERRUPCIONES POR HARDWARE USADAS EN LA PC CUALES ESTN OCUPADAS Y CUALES DISPONIBLES.Las interrupciones de hardware pueden ser internas o externas.INTERRUPCIONES INTERNAS DE HARDWARE:Las interrupciones internas son generadas por ciertos eventos que surgen durante la ejecucin de un programa.Este tipo de interrupciones son manejadas en su totalidad por el hardware y no es posible modificarlas. Un ejemplo claro de este tipo de interrupciones es la que actualiza el contador del reloj interno de la computadora, el hardware hace el llamado a esta interrupcin varias veces durante un segundo para mantener la hora actualizada.Aunque no podemos manejar directamente esta interrupcin (no podemos controlar por software las actualizaciones del reloj), es posible utilizar sus efectos en la computadora para nuestro beneficio, por ejemplo para crear un "reloj virtual" actualizado continuamente gracias al contador del reloj interno. Unicamente debemos escribir un programa que lea el valor actual del contador y lo traduzca a un formato entendible para el usuario. INTERRUPCIONES EXTERNAS DE HARDWARE:Las interrupciones externas las generan los dispositivos perifricos, como pueden ser: teclado, impresoras, tarjetas de comunicaciones, etc. Tambin son generadas por los coprocesadores.No es posible desactivar a las interrupciones externas.Estas interrupciones no son enviadas directamente a la UCP, sino que se mandan a un circuito integrado cuya funcin es exclusivamente manejar este tipo de interrupciones. El circuito, llamado PIC 8259A, si es controlado por la UCP utilizando para tal control una serie de vas de comunicacin llamadas puertos.INTERRUPCIONES DE HARDWARE:NroUsada porDescripcin

0SistemaReloj del Sistema

1SistemaTeclado

2LibreActualmente IRQ2 e IRQ9 estn unidas entre s.

3COM2, COM4Reservada para COM2, COM4, Si ud. no posee placa multifuncin Puede estar libre

4COM1, COM3Reservada para COM1, COM3, Si ud. no posee placa multifuncin Puede estar libre

5LibreReservada para LPT2, Normalmente libre an si hay 2 mas Impresoras.

6SistemaControladora de Disketteras, FDD, Floppy disk controller.

7LibreReservada para LPT1, Normalmente libre an si hay Impresoras.

8SistemaRTC, Reloj de tiempo real, Reloj del sistema.

9LibreEn sistemas PCI es utilizada por el PLUG &PLAY

10LibreEn sistemas PCI se asigna al Slot Nro 1 (Generalmente Video)

11LibreEn sistemas PCI es utilizada por el PLUG &PLAY

12LibreEn sistemas PCI es utilizada por el PLUG &PLAY

13SistemaCoprocesador Matemtico Todos los sistemas 486 DX y superiores lo poseen.

14SistemaDisco rgido IDE- Solamente. Controladora primaria IDEPuede ser que en un sistema con HD SCSI y un CD-ROM IDE el CD est conectado al conector IDE primario.

15?La utiliza la segunda controladora IDE, si su motherboard posee dos enchufes IDE Posee una controladora con dos enchufes IDE posee una placa de sonido y el CD-ROM IDE est conectado a la misma, esta IRQ se utiliza.

Solo se pueden utilizar las que figuran libres mas la IRQ15 y las de los puertos COM.DESCRIBIR EL PROCEDIMIENTO PARA ACCEDER A UNA INTERRUPCIN.HARDWARE DE LOS IRQ: Originalmente, las computadoras basadas en el procesador 8086 y 8088 (denominadas comnmente tipo XT), posean tan solo 8 posibles IRQ para los diferentes dispositivos que se deseen agregar a esas computadoras. La asignacin para cada IRQ puede ser apreciada en la tabla adjunta. El IRQ nmero 0 estaba siempre asignado para el reloj del sistema, el IRQ 1 para el controlador de teclado, el 2 libre, el 3 para el puerto serial COM2 donde habitualmente se conecta el modem, el 4 para el puerto serial COM1 donde habitualmente se conecta el ratn, el 5 para la atencin del disco duro, el 6 para la atencin de las disqueteras, y el 7 para el puerto paralelo, donde va generalmente una impresora o un scanner. En definitiva, tan solo se podra agregar una tarjeta, con el IRQ 2 disponible (available). Afortunadamente esto ha cambiado para las computadoras actuales, que poseen 16 IRQs disponibles (de 0 a 15). Toda computadora basada en un procesador 80286 o superior tiene esta cantidad de interrupciones disponibles.

Pero la pregunta interesantes es cmo se ha logrado esto?, bueno, ac la respuesta: originalmente, en las computadoras XT, cualquier interrupcin es atendida por un chip cuyo nmero es el 8259, tambin denominado Controlador De Interrupciones. Este chip tan solo tiene la capacidad de atender 8 interrupciones, es decir tienen fsicamente 8 entradas, as que para los equipos AT (286 o superior) se han empleado simplemente dos de estos controladores, redireccionando todas las interrupciones generadas por el segundo chip hacia el primero a travs del IRQ 2, como se puede observar en el grfico. Ya que el IRQ 2 del primer chip ha de estar ocupado permanentemente, tan solo quedan 15 posibles IRQs. Recordemos que las interrupciones tienen una prioridad dada por su nmero, y como todas las interrupciones del segundo controlador entran por la interrupcin 2 del primero, las interrupciones nmero 8 a la nmero 15 tienen todas prioridad 2. El grfico permite ver una asignacin para cada interrupcin, pero ese tema se ver en seguida con la tabla de asignaciones.Un aspecto importante a comprender es qu sucede con los dispositivos que requieren de forma obligatoria el IRQ 2, cosa bastante normal. En realidad en los equipos AT, cualquier tarjeta conectada al IRQ 2 funciona perfectamente, con la salvedad de que en realidad est funcionando en el IRQ 9, y no en el 2. Este hecho es completamente transparente y no requiere de mayor cuidado, salvo entender que si algn dispositivo est empleando el IRQ 2, ningn otro podr ser asignado al IRQ 9, por la razn antes mencionada.ASIGNACIN DE LOS IRQ PARA EQUIPOS AT:La tabla adjunta puede ser obtenida a travs de diversos programas, uno de los ms conocidos es el MSD o Microsoft Diagnostic, programa que viene incluido dentro del mismo DOS. Es importante notar tambin que no todos los equipos tienen idntica disposicin de IRQs, es conveniente analizar la tabla del equipo ejecutando por ejemplo el MSD bajo el DOS. La importancia de esta tabla es fundamental, porque indica claramente qu dispositivo est empleando qu IRQ. Veamos entonces este ejemplo. El IRQ 0 y el IRQ 8 estn por lo general siempre asignados a seales de sincronizacin y tiempo propias de la tarjeta madre, por lo que no se las debe tocar. El IRQ 1 se destina a atender las interrupciones provenientes del teclado, es decir, la pulsacin de una tecla (por cierto que an tipeando el mecangrafo ms diestro y veloz, el tiempo entre pulsacin y pulsacin es para el CPU una verdadera eternidad).

El IRQ 2 est destinado exclusivamente a la atencin del segundo chip controlador 8259, aunque se lo pueda emplear en la prctica ya que es suplido por el IRQ 9 como se mencion anteriormente. El IRQ 3 ha de atender un dispositivo serial que se halle en el puerto COM2 o COM4, y el IRQ 4 otro dispositivo serial conectado al COM1 o al COM3. Este punto es interesante ya que al inicio de este anlisis dijimos claramente que un mismo IRQ no puede ser compartido por dos o ms dispositivos a la vez, como por ejemplo el modem y el ratn, que perfectamente se podra conectarlos al COM2 y al COM4, para que empleen el IRQ 3. Sin embargo este hecho ocasionara que el momento en que el modem est activo y el ratn tambin, el equipo se bloquee completamente, aparezcan extraos mensajes de error en la pantalla y exista la necesidad de reiniciar todo, con las molestias y perjuicios pertinentes. Esto sucede toda vez que dos dispositivos intentan emplear el mismo IRQ. Por esta razn, se suele conectar un equipo al COM1 y se deja libre el COM3, o bien a la inversa, pero nunca en ambos, y lo mismo para el COM2 y el COM4. Por lo general, se conecta al COM1 el ratn, y al COM2 el modem, de esta forma emplean el IRQ 4 y 3 respectivamente, sin crearse conflictos (en una edicin futura dedicada a modems exclusivamente analizaremos plenamente este aspecto). Como se puede apreciar en la columna Detectado , el programa MSD ha detectado algo en el COM1, pero nada en el COM3 (Not Detected), y lo mismo ocurre para el COM2, que ha sido detectado y no el COM4. Por cierto, que el equipo del que se obtuvo esta tabla tiene el ratn en el COM1 y el modem en el COM2. Por su parte, el IRQ 5 tiene marcada en su columna. Detectado , la palabra No , lo que da a entender que ese IRQ est disponible, y que por lo general se lo emplea para una segunda impresora.Los IRQ 6, 7, y 8 han sido detectados, por lo que no pueden ser empleados. El IRQ 9 se halla disponible para suplir al 2. Los IRQ 10, 11, 12 y 15 no han sido detectados, y se hallan bajo el rtulo de (Reserved) , lo que significa que estn disponibles para atender cualquiera dispositivo a ser agregado en un futuro, como ser: tarjeta de sonido, tarjeta de TV, etc. Finalmente el IRQ 13 y 14 se hallan destinados a atender el coprocesador matemtico y las unidades de discos duros respectivamente. Los nombres de las columnas son bastante claros, a excepcin de la denominada Manejado Por , que indica el elemento de hardware o software que administra el dispositivo. Por ejemplo, el teclado es administrado por un programa denominado KEYB, bastante conocido para todos los que han manejado o configurado el viejo DOS, muchos dispositivos son administrados por las rutinas del BIOS, que por lo general ser cargan a la memoria RAM cuando se inicializa la computadora (el proceso de carga se denomina Shadow BIOS), y Default Handlers indica que el dispositivo ser administrado por los programas del mismo fabricante. El smbolo ??? indica que el programa MSD no ha podido averiguar quin administra ese IRQ, cosa normal para el reloj del sistema, que funciona de forma autnoma.

INTERRUPCIONES POR SOFTWARE USADAS EN LA PC CUALES ESTN OCUPADAS Y CUALES DISPONIBLES.INTERRUPCIONES DE SOFTWARE:La PC vienen equipadas con programas de servicio integrados llamados el ROM-BIOS. Los programas de la computadora necesitan una manera de pedir los servicio que proporciona el BIOS y las interrupciones de software son la manera en que lo hacen. Las interrupciones de software funcionan en la misma forma que las de hardware. La nica diferencia con ellas es lo que causa la interrupcin. En este caso, en vez de que suceda inesperadamente, las interrupciones de software son generadas intencionalmente por un programa. Hay una instruccin especial de lenguaje ensamblador, llamado INT, que se usa por un programa para pedir una interrupcin. Las interrupciones correspondientes al DOS. Son Las siguientes:NroDESCRIPCIN

20HTerminar Programa

21HPeticin de funcin

22HDireccin de terminacinEspecifica la direccin a donde se bifurcar cuando se termine el programa. Esta direccin se copia sobre el PSP

23HDireccin de Salida por CRTL-BREAK

24HManejador de error Critico

25HLectura de disco absoluta

26HGrabacin en Disco Absoluta

27HTerminar pero quedar residente

28HNo se usa (Reservada)

3FHNo se usa (Reservada)

DISEO DE UN SISTEMA DE FORMA QUE PODAMOS PROBAR LAS INTERRUPCIONES DE AMBOS TIPOS . TRAER PROGRAMA PROBADO FUENTE Y COMPILADOEl siguiente programa es un men que funciona con las interrupciones tanto de HARDWARE Y DE SOFTWARE . Utiliza interrupciones de hardware del teclado, e interrupciones de software de la ROM-BIOS. ; Para maquinas 8088/80386 A263103.ASM ; Programa Graficador con control total del cursor. ; Con interrupciones de la ROM BIOS ; Compilado como EXE.

modot macro ; Define el modo texto 80 x25 mov ah,0h ; mov al,2h ; int 10h ; endm ;

dseg segment para 'datos' ;Segmento de datos, Definiciones en assembler memo dw 0B800h ;Inicio de la pantalla pan dw 2000 dup(?) ;Separa memoria sin inicializar x1 dw 20 ;Coordenadas esquina sup.izq. del menu. y1 dw 4 ;Coordenadas esquina sup.izq. del menu. xx0 db 0 ; yy0 db 0 ; x0x db 0 y0y db 0 c01 dw 0 c02 dw 0 f01 dw 0 f02 dw 0 x2 dw 60 ;Coordenadas esquina inf.derecha del menu. y2 dw 22 ;Coordenadas esquina inf.derecha del menu. XX db '[7 3 3 3 3 3 3 3G7R7A7F7I7C7A7D7O7R7 3 3 3 3 3 3 3]7' ;Menu AA db 'Fa18 M O D O T E X T O ' BB db 'Fa28 M O V I M I E N T O C O N A R R A S T R E ' CC db 'Fa38 M O V I M I E N T O C O N T R O L A D O ' EE db 'Fa48 M O D O G R A F I C O ' FF db 'Fa58 C U A D R A D O R E L L E N O ' GG db 'Fa68 C U A D R A D O E N M O V I M I E N T O ' HH db 'Fa78 M O V I M . E N P E R S P E C T I V . ' II db 'Fa88 M O V I M I E N T O D E L I N E A S ' JJ db 'Fa98 M O V I M I E N T O A N I M A D O ' KK db 'Fa1808 G R A F I C A D O R ' LL db ' E8S8C8 F I N ' MM db NN db car db fil dw 0 ;fila actual col dw 0 ;columna actual fi1 dw 0 ;fila anterior co1 dw 0 ;columna anterior color dw 0 ;color colo db 0 long1 dw 0 long2 dw 0 video db 11h ;Resolucion grafica 640 x 480dseg ends

cseg segment ;Programa principal. assume cs:cseg, ds:dseg, es:cseg, ss:cseg ini:jmp marco ;inicio de programamarco proc near ; mov ax,cs ; mov ax,dseg ; mov ds,ax ; mov es,ax ; call salva ; push ax ; menu:mov ax,MEMO ;Inicio de memoria de pantalla mov ES,ax ; mov di,598 ;CLEAR SCREEN MOV AX,0720h ; cle1:add di,80 ; mov cx,80 ; cle0:add di,1 ; mov es:[di],ax ; loop cle0 ; cmp di,3300 ; jl cle1 ; MOV AX,MEMO ;Inicio de la pantalla MOV ES,AX ; MOV CX,58 ;Longitud de cadena a imprimir MOV AX,850 ;Posicion en la pantalla MOV DI,AX ;Direccion destino MOV SI,OFFSET AA;Direccion origen de la cadena AA REP MOVSB ;Repite traslado de cadena byte a byte MOV CX,58 ; add AX,160 ; MOV DI,AX ; MOV SI,OFFSET BB; REP MOVSB ;MOV SI,OFFSET EE; REP MOVSB ; MOV CX,58 ; add AX,160 ; MOV DI,AX ; MOV SI,OFFSET FF; REP MOVSB ; MOV CX,58 ;lea bx,CS:f3 ; lea bx,CS:f4 ;opcion:call resetraton ; call punteroon ;opcion1:mov ah,01 ;Funcion: leer una tecla ah=1 int 16h ;llamada al ROM BIOS jnz etiqw ; call leerraton ; test bx,1 ; jz opcion1 ; sub dx,40 ;algoritmo para el mouse mov ax,dx ;jmp etiqr ;etiqw: mov ah,0 ;algoritmo para el teclado int 16h ; mov al,ah ; sub al,59 ; sub ah,ah ;etiqr: cmp ax,10 ; ja finx ;Compara con Esc mov bl,6 ; mul bl ; lea bx,f1 ; add bx,ax ; jmp bx ;rat01: jmp opcion ;Fin de opciones F1:call graf1 ;Llama procedimientos graf jmp ya ; F2:call graf2 ; jmp ya ; F3:call graf3 ; jmp ya ; F4:call graf4 ; jmp ya ; F5:call graf5 ; jmp ya ; F6:call graf6 ; jmp ya ; F7:call graf7 ; jmp ya ; F8:call graf8 ; jmp ya ; F9:call graf9 ; jmp ya ; F10:call graf10 ; jmp ya ;Salida de bifurcacion finx:jmp fin ; ya:mov ah,8 ;Espera que se pulse una tecla, sin eco. int 21h ; mov ah,0 ;Modo mov al,2 ; normal de int 10h ; pantalla 80 x 25 JMP menu ; FIN:mov ah,0 ;Modo mov al,2 ; normal de int 10h ; pantalla pop ax ; mov ds,ax ; mov ax,MEMO ;Inicio de memoria de pantalla mov ES,ax ; mov di,0 ;LOAD SCREEN MOV cx,2000 ;longitud de pantalla ir01:MOV ax,pan[di] ; mov es:[DI],ax ; add di,2 ; loop ir01 ; mov ah,4ch ;Salida al DOS con codigo int 21h ; de errores.marco endp ;

graf1 proc near ;Movimiento controlado de un caracter en modo texto. modot ;Inicializa el modo texto. mov xx0,40 ; mov yy0,12 ; mov car,0dbh call escrib call punteroon push ax tecl: mov ah,0h int 16h cmp ah,04dh je de cmp ah,04bh je iz cmp ah,048hap:pop ax ret z3:mov yy0,00 jmp w3graf1 endp

graf2 proc near ;MOVIMIENTO TEXTO modot mov xx0,40 mov yy0,12 mov car,0dbh call escrib call punteroon ;Activa mouse push axtecla: mov ah,0h int 16h cmp ah,04dhw7: add yy0,01 jmp escritescrit:mov car,0dbh call escrib jmp tecla z4:mov xx0,00 jmp w4 z5:mov xx0,80 jmp w5 z6:mov yy0,25 jmp w6 z7:mov yy0,00 jmp w7 esca:pop ax retgraf2 endp

graf3 proc near modot call punteroon push ax push bx push cx push dx mov xx0,40 mov yy0,12call pixel loop ir63 retcuad endp

graf4 proc near ;CUADRADO RELLENOmov col,61 mov cx,517 ale: inc col call pixel loop ale cmp fil,437 jl mar retgraf4 endpgraf5 proc near call modoadd fil,01 cmp long1,00 jg iiii retgraf5 endpgraf6 proc near call modo call punteroon push ax i01:mov col,90 mov fil,10 mov long1,460 mov long2,460 i00:mov color,01cmp al,27 jne i01 pop ax retgraf6 endpgraf7 proc near call modo call punteroon mov col,19 mov fil,79 mov color,01 mov long1,300mov col,320 mov fil,220 mov color,0fh call pixel push ax tcla: call guard mov ah,0h int 16h cmp ah,047hmodo proc near mov ah,0h ;Fija modo de video mov al,video ;modo de video, resolucion int 10h ; retmov ah,02h mov dh,yy0 mov dl,xx0 mov bh,0h int 10h mov ah,09h mov bh,0h mov bl,03h mov cx,01 mov al,car int 10h pop dx pop cx pop bx pop ax retescri endpsalva proc near mov ax,MEMO ;inicio de memoria de pantalla mov ES,ax ; mov di,0 ;SAVE SCREEN MOV cx,2000 ;longitud de pantalla sal0:MOV ax,es:[DI] ; mov pan[di],ax add di,2 loop sal0 mov ax,ds retsalva endpguard proc near push ax push bx mov ax,fil mov bx,col mov fi1,ax mov co1,bx pop bx pop ax retguard endpborra proc near push cx push dx push ax mov cx,co1 mov dx,fi1 mov ax,00h ;color mov ah,0ch ;Escribe pixel int 10h pop ax pop dx pop cx retborra endppixe1 proc near push cx push dx push ax mov cx,col mov dx,fil mov al,0fh ;color mov ah,0ch ;Escribe pixel int 10h pop ax pop dx pop cx retpixe1 endppixel proc near push cx push dx push ax mov cx,col mov dx,fil mov ax,color ;colorretleerraton endppunteroxy proc near mov ax,4 sub bx,bx int 51 retpunteroxy endpresetraton proc near mov ax,0 int 51 retresetraton endpcseg ends end iniEL SETUP DE LA PC, LAS OPCIONES DE CONFIGURACIN Y LOS PARMETROS.BIOS SETUP "Basic Input-Output System", sistema bsico de entrada-salida. Programa incorporado en un chip de la placa base que se encarga de realizar las funciones bsicas de manejo y configuracin del ordenador.Estudiaremos a continuacin como realizar el seteo del BIOS de un PC. Para ello nos basaremos en un BIOS AMI o AWARD, que son los ms tpicos y difundidos en nuestra plaza. Los BIOS de otros proveedores si bien tienen una estructura de mens bastante distinta a la que aqu mostramos, poseen opciones muy similares a las que detallaremos. Para entrar al SETUP del BIOS debemos presionar la tecla [Supr] luego de que el PC termine el P.O.S.T. (Power On Self Test). Esto es habitualmente indicado por el PC con el mensaje press DEL to enter SETUP (tome en cuenta que DEL es sustituido por Supr en el teclado en espaol. La pantalla principal de una BIOS clsica es algo as:

Mientras que la de una WinBIOS tiene este aspecto:

Para acceder a los SETUP de los BIOS de otros proveedores se deben presionar otras teclas o combinaciones de las mismas.A modo de ejemplo: BIOS PHOENIX --------------------------------[F2] BIOS ACER--------------------------------------[Ctrl]+[Alt]+[Esc] BIOS IBM-----------------------------------------[Alt]+[F1] BIOS COMPAQ---------------------------------[F10]

En caso de problemas con el SETUP del BIOS, o de haber perdido el password asignado al mismo, es posible borrarlo por completo (incluyendo el password), cambiando de lugar por unos segundos un jumper del motherboard. Con esto se hace un nuevo seteo del BIOS, cargando primero los seteos por defecto, y luego optimizndolos. Veremos a continuacin los distintos mens y submens, con una pequea explicacin de sus significados y seteos ms habituales. STANDARD CMOS SETUP En este men podemos ajustar la fecha y hora del reloj del PC, declarar los parmetros de los discos duros, eventualmente declarar que tenemos conectado un CD-ROM, y declarar que tipo de disqueteras tenemos conectadas al sistema (estas se deben declarar manualmente, pues no pueden ser auto detectadas). Los discos duros pueden ser seteados como Auto, con lo cual el BIOS los detectar automticamente cada vez que arranque el PC, pero esto consume tiempo en el arranque. Esta opcin es til en el caso de tener un disco IDE removible, pues nos asegura que siempre el sistema estar correctamente configurado. ADVANCED CMOS SETUP Quick Boot Esta opcin nos permite elegir si queremos realizar un chequeo exhaustivo de la memoria y dems componentes del sistema, o uno rpido. La opcin ms habitual es ENABLED. 1st Boot Device Permite elegir cual ser la primera unidad desde la cual el PC intentar arrancar el sistema operativo 2nd Boot Device Segunda unidad en el orden de bsqueda de unidades de donde bootear 3rd Boot Device Tercera unidad en el orden de bsqueda de unidades de donde bootear Try Other Boot Devices Aqu indicamos si luego de haber agotado todos los dispositivos enumerados anteriormente, seguimos buscando hasta encontrar alguno S.M.A.R.T. for Hard Disks Si habilitamos esta opcin el disco duro puede reportar a cierto software (no incluido en los sistemas operativos tpicos) informacin acerca de su estado Floppy Drive Swap En caso de tener ms de una disquetera instalada, esta opcin nos permite permutar las letras asignadas a ellas Floppy Drive Seek Esta opcin al habilitarla hace que durante el proceso de arranque el PC verifique si tiene alguna disquetera conectada. Habitualmente se deshabilita, pues consume un par de segundos en el arranque. PS/2 Mouse Support En caso de tener un mouse de este tipo debemos habilitarla, en caso contrario se deshabilita a fin de liberar recursos Password Check Aqu podemos elegir dos opciones: Setup o Always indicando si queremos que el PC solicite el password de seguridad cada vez que es encendido, o slo cuando se desea acceder al SETUP del BIOS .Todas las dems opciones de este men no se deben modificar de sus valores por defecto. ADVANCED CHIPSET SETUP Trend ChipAway Virus Deteccin de virus a nivel del BIOS. Esta opcin al activarla controla si algn software trata de escribir al MBR y/o sector de booteo del disco (comportamiento habitual de muchos virus). Debe deshabilitarse siempre pues Windows escribe a esos lugares y eso es interpretado como una amenaza de virus por el BIOS, pudiendo ocasionar serios inconvenientes Auto Configure DRAM Timing Es aconsejable dejar habilitada esta opcin DRAM Speed (ns) Aqu debemos indicarle al BIOS la velocidad de la memoria que estamos usando en el PC expresada en nanosegundos. DRAM Integrity Mode Esta opcin indica que tipo de correccin de errores usa la memoria instalada, debe setearse de acuerdo a las caractersticas de la misma, o en caso de duda, deshabilitarse, eligiendo la opcin Non ECC On Board USB Function Esta opcin debe habilitarse si vamos a usar algn dispositivo USB, en caso contrario, deshabilitarla para ahorrar recursos El resto de las opciones deben dejarse en sus valores por defecto. POWER MANAGEMENT SETUP Power Management Esta opcin permite configurar las caractersticas de ahorro de energa a travs del BIOS del PC. Es aconsejable deshabilitarlo, y dejar que Windows maneje estas configuraciones. En caso contrario, pueden producirse conflictos entre ambos. RTC Alarm Power On Esto permite programar el PC para encenderse automticamente en una fecha dada, a una cierta hora PCI/Plug and Play Setup Plug and Play Aware O/S Debemos elegir Yes para indicarle al BIOS que el Sistema Operativo puede administrar los recursos Plug and Play Allocate IRQ to PCI VGA El seteo de esta opcin depende de la tarjeta VGA utilizada. Tpicamente, las tarjetas de alta performance deben llevar esta opcin habilitada En este men es donde podemos indicarle al BIOS que disponemos de algn dispositivo no Plug and Play, eligiendo para los recursos utilizados por ese dispositivo (DMA e IRQ) la opcin ISA/EISA o ISA-Legacy en vez de la opcin dada por defecto de PnP, o PCI/PnP. Los recursos marcados de esa forma no sern asignados por el BIOS a ningn dispositivo Plug and Play. Las dems opciones se dejarn en sus opciones por defecto. Load Optimal Settings Esta opcin carga un conjunto de valores por defecto, que si bien no asegura el mximo rendimiento del PC, s asegura que este funcionar. Load Best Performance Settings Como su nombre lo indica esta opcin carga un conjunto de valores por defecto con los cuales el PC tendr su mximo rendimiento a juicio del fabricante. Peripheral Setup En este men podemos habilitar o deshabilitar la controladora de disqueteras, los controladores IDE, y los puertos seriales y paralelos, incluidos en el motherboard. Tambin podemos configurar estos dispositivos, eligiendo, por ejemplo, a que COM queremos que correspondan cada uno de los puertos seriales del motherboard, a que LPT queremos asignar el puerto de impresora, y si queremos que este sea un puerto estndar (Normal, o SPP), bidireccional (EPP), o mejorado (ECP). (Siempre que la impresora lo soporte debemos utilizar sta ltima opcin, pues es la de mayor velocidad de comunicacin) En caso de que el motherboard incluya a bordo otros perifricos tales como tarjeta de video, sonido, red, modem, etc., desde este men podemos habilitarlos o deshabilitarlos. CPU Plug and Play Setup En los motherboards modernos, en vez de indicar las caractersticas del procesador por medio de jumpers, lo hacemos a travs de menes en el SETUP del BIOS. Normalmente esto se hace indicando dos parmetros: la frecuencia de reloj del bus de memoria, y un multiplicador. El producto de estos dos valores da la frecuencia de trabajo del procesador. En los procesadores Pentium II, III, y similares ( K6-2, K7, etc.) las frecuencias de bus de memoria ms habituales son: 66MHz, 100MHZ, 133MHz, y ya estn apareciendo mayores. Este valor se debe elegir de acuerdo a la velocidad de la memoria, ya que si usamos una memoria PC-66, con un bus de 100 MHZ, esta no funcionar, o lo har en forma errtica. A modo de ejemplo, un procesador Pentium III de 600MHz se configurar con un reloj de bus de 100MHz, y un multiplicador de 6, o reloj de 133MHz, y multiplicador de 4.5, dependiendo de lo que indiquen los fabricantes del procesador y el motherboard utilizado. En general, en caso de existir varias combinaciones de valores que den la frecuencia adecuada para el procesador (como en el caso anterior), y siempre que tanto el procesador, como la memoria y el motherboard lo admitan, se debe elegir la opcin correspondiente a la mayor velocidad de bus, pues esta ser la que brinde un mayor rendimiento del sistema. Change Supervisor Password Este men permite ingresar un password que ser utilizado de acuerdo a las opciones elegidas en el men Advanced CMOS Setup Auto-Detect Hard Disks Este men realiza la autodeteccin de todos los parmetros de todos los discos duros IDE instalados en los controladores incluidos en el motherboard, introduciendo automticamente estos datos en el men Standard CMOS Setup. En algunos BIOS, esta opcin detecta adems todos los otros dispositivos IDE conectados a los controladores En muchos BIOS actuales esta opcin ha desaparecido, quedando integrada al men Standard CMOS Setup donde se hace el proceso de autodeteccin de discos al presionar la tecla F3, u otra que indique el fabricante. Save Settings and Exit Esta opcin nos permite abandonar el SETUP, luego de salvar los cambios realizados. Elegir esta opcin es lo mismo que apretar la tecla [F10] en cualquier punto de este men. Luego de elegirla (o presionar [F10] ) se nos solicita la confirmacin, y presionando Y (yes) se reinicia el PC salvando los cambios realizados. Exit Without Saving Esta opcin abandona el SETUP, dejando sin efecto los cambios realizados, y luego de confirmarlo, reinicia el PCBIBLIOGRAFIAhttp://club.telepolis.com/mydream/Asm/ASM1.htmlhttp://www.uhu.es/tomas.mateo/ac2/manual%20ensamblador%20UHU.pdf