Cmos Programas Residentes y Manejo de Interrupciones

July 18, 2017 | Author: Rodrigo Laucata | Category: Bios, Bit, Computer Hardware, Central Processing Unit, Manufactured Goods
Share Embed Donate


Short Description

Download Cmos Programas Residentes y Manejo de Interrupciones...

Description

“UNIVERSIDAD NACIONAL SAN AGUSTIN” FACULTAD DE INGENIERIA DE PRODUCCION Y SERVICIOS

ESCUELA PROFESIONAL DE INGENIERIA ELECTRONICA

ARQUITECTURA DE COMPUTADORAS LABORATORIO

Laboratorio 7: CMOS PROGRAMAS RESIDENTES Y MANEJO DE INTERRUPCIONES. CHOQUE FERNANDEZ, Manuel Alejandro

20090956

____________

LAUCATA FUENTES, Rodrigo Alfonso

20052990

____________

Arequipa, 11 de Junio de 2013

ÍNDICE 1 ¨PROGRAMAS RESIDENTES TIPEADOS DE LOS TEXTOS ESPECIALIZADOS EN ALGÚN LENGUAJE PEQUEÑO PORTABLE (ASEMBLER, BASIC, C STD, PASCAL, ETC) ................................. 3 1.1 Programa Residente en Memoria ................................................................................. 3 1.2 PROGRAMAS: ................................................................................................................ 3 1.2.1 1º Primer Programa............................................................................................... 3 1.2.2 2º Segundo Programa ........................................................................................... 4 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. ................................................................................... 5 2.1 EL RELOJ DE TIEMPO REAL ............................................................................................ 5 2.2 LAS FUNCIONES DE RELOJ ............................................................................................. 7 2.3 REGISTROS DE ESTADO ................................................................................................. 8 2.3.1 REGISTRO A ........................................................................................................... 8 2.3.2 REGISTRO B............................................................................................................ 8 2.3.3 REGISTRO C............................................................................................................ 8 2.3.4 REGISTRO D ........................................................................................................... 9 2.3.5 PROGRAMA DE RELOJ RESIDENTE EN TIEMPO REAL ............................................ 9 3 PROGRAMAR ALARMAS DE ACUERDO AL USO DEL RELOJ DE TIEMPO REAL DE LA PC. TRAER PROGRAMA DE ALARMAS................................................................................................ 13 4 INTERRUPCIONES POR HARDWARE USADAS EN LA PC CUALES ESTÁN OCUPADAS Y CUALES DISPONIBLES. ................................................................................................................. 13 4.1 INTERRUPCIONES INTERNAS DE HARDWARE: ............................................................ 13 4.2 INTERRUPCIONES EXTERNAS DE HARDWARE: ............................................................ 13 4.3 INTERRUPCIONES DE HARDWARE:.............................................................................. 13 5 DESCRIBIR EL PROCEDIMIENTO PARA ACCEDER A UNA INTERRUPCIÓN. ........................... 14 5.1 HARDWARE DE LOS IRQ: ............................................................................................. 14 5.2 ASIGNACIÓN DE LOS IRQ PARA EQUIPOS AT: ............................................................. 15 6 INTERRUPCIONES POR SOFTWARE USADAS EN LA PC CUALES ESTÁN OCUPADAS Y CUALES DISPONIBLES................................................................................................................................ 17 6.1 INTERRUPCIONES DE SOFTWARE: ............................................................................... 17 7 DISEÑO DE UN SISTEMA DE FORMA QUE PODAMOS PROBAR LAS INTERRUPCIONES DE AMBOS TIPOS . TRAER PROGRAMA PROBADO FUENTE Y COMPILADO ..................................... 18 8 EL SETUP DE LA PC, LAS OPCIONES DE CONFIGURACIÓN Y LOS PARÁMETROS. ................ 24 8.1 BIOS SETUP .................................................................................................................. 24 8.2 STANDARD CMOS SETUP............................................................................................. 25 8.3 ADVANCED CMOS SETUP ............................................................................................ 26 8.4 ADVANCED CHIPSET SETUP ......................................................................................... 26 8.5 POWER MANAGEMENT SETUP ................................................................................... 27 9 BIBLIOGRAFIA ...................................................................................................................... 29

CMOS PROGRAMAS RESIDENTES Y MANEJO DE INTERRUPCIONES. 1 ¨PROGRAMAS RESIDENTES TIPEADOS DE LOS TEXTOS ESPECIALIZADOS EN ALGÚN LENGUAJE PEQUEÑO PORTABLE (ASEMBLER, BASIC, C STD, PASCAL, ETC) 1.1 Programa Residente en Memoria Un 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 ejecución. Ello es posible utilizando una función específica del sistema operativo. Los programas residentes pueden ser activados mediante una combinación de teclas o bien actuar con cierta periodicidad, asociados a la interrupción del temporizador. También pueden interceptar funciones del DOS o de la BIOS para cambiar o modificar su funcionamiento. Al final, casi siempre resulta totalmente inevitable desviar alguna interrupción hacia una nueva rutina que la gestione, con objeto de activar el programa residente

1.2 PROGRAMAS: 1.2.1

1º Primer Programa

Este primer programa en C colocará de manera perpetua mi nombre “Jose Choquehuaita” 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] = "JOSE CHOQUEHUAITA"; 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

9

ALE:

MOV MOV MOV DIV ADD MOV MOV MOV MOV DIV ADD MOV MOV MOV MOV DIV ADD MOV MOV MOV MOV MOV MOV MOV MOV INC MOV INC INC DEC CMP JNZ

HORA+2,':' AH,0 AL,CL BH AX,3030H WORD PTR HORA+3,AX HORA+5,':' AH,0 AL,DH BH AX,3030H WORD PTR HORA+6,AX HORA+8,':' AH,0 AL,DL BH AX,3030H WORD PTR HORA+9,AX AX,PANTALLA ES,AX DI,2*(80-11) CX,11 SI,0 AL,HORA[SI] ES:[DI],AL DI BYTE PTR ES:[DI],31 SI DI CX CX,0 ALE:

FIN: POP ES POP DS POP DI POP SI POP DX POP CX POP BX POP AX STI IRET RELOJ 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 27H INSTALAR ENDP CODIGO ENDS END INICIO ;PROGRAMA DE RELOJ RESIDENTE ;SEGMENTO MEMORIA DE PANTALLA VGA PANTALLA EQU 0B800H ;SEGEMENTO PRINCIPAL CODIGO SEGMENT ASSUME CS:CODIGO,DS:CODIGO ORG 100H ; ORIGEN POR SER FICHERO TIPO COM INICIO:

10

JMP INSTALAR ; VARIABLES DEFINIDAS HORA DB 35 DUP('?') RELOJ PROC CLI PUSH PUSH PUSH PUSH PUSH PUSH PUSH PUSH

AX BX CX DX SI DI DS ES

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

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

MOV MOV MOV DIV MOV

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

MOV MOV MOV DIV MOV

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

MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV DIV ADD MOV MOV

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

11

MOV MOV DIV ADD MOV MOV

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

MOV MOV DIV ADD MOV MOV

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

MOV MOV DIV ADD MOV

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

; DIRECCIONA ZONA DE MEMORIA DE LA PANTALLA MOV AX,PANTALLA MOV ES,AX MOV DI,2*(80-31) MOV CX,31 MOV SI,0

; cambiar con el tama¤o de la cadena ; cambiar

MOVER: MOV AL,HORA[SI] MOV ES:[DI],AL INC DI MOV BYTE PTR ES:[DI],31H INC SI INC DI LOOP MOVER FIN: POP ES POP DS POP DI POP SI POP DX POP CX POP BX POP AX STI IRET RELOJ 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 27H INSTALAR ENDP CODIGO ENDS END INICIO

12

3 PROGRAMAR ALARMAS DE ACUERDO AL USO DEL RELOJ DE TIEMPO REAL DE LA PC. TRAER PROGRAMA DE ALARMAS. Existen muchas aplicaciones posibles que podría hacer uso del reloj de tiempo real de la PC. Por ejemplo, se podría trabajar con la hora para chequear algún dispositivo, mantener un contador interno para realizar algo cuando alcance cierto valor, etc.

4 INTERRUPCIONES POR HARDWARE USADAS EN LA PC CUALES ESTÁN OCUPADAS Y CUALES DISPONIBLES. Las interrupciones de hardware pueden ser internas o externas.

4.1 INTERRUPCIONES INTERNAS DE HARDWARE: Las interrupciones internas son generadas por ciertos eventos que surgen durante la ejecución 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 interrupción varias veces durante un segundo para mantener la hora actualizada. Aunque no podemos manejar directamente esta interrupción (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.

4.2 INTERRUPCIONES EXTERNAS DE HARDWARE: Las interrupciones externas las generan los dispositivos periféricos, como pueden ser: teclado, impresoras, tarjetas de comunicaciones, etc. También 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 función 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 vías de comunicación llamadas puertos.

4.3 INTERRUPCIONES DE HARDWARE: Nro Usada por Descripción 0

Sistema

Reloj del Sistema

1

Sistema

Teclado

2

Libre

Actualmente IRQ2 e IRQ9 están unidas entre sí.

13

3

COM2, COM4

Reservada para COM2, COM4, Si ud. no posee placa multifunción Puede estar libre

4

COM1, COM3

Reservada para COM1, COM3, Si ud. no posee placa multifunción Puede estar libre

5

Libre

Reservada para LPT2, Normalmente libre aún si hay 2 ó mas Impresoras.

6

Sistema

Controladora de Disketteras, FDD, Floppy disk controller.

7

Libre

Reservada para LPT1, Normalmente libre aún si hay Impresoras.

8

Sistema

RTC, Reloj de tiempo real, Reloj del sistema.

9

Libre

En sistemas PCI es utilizada por el PLUG &PLAY

10

Libre

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

11

Libre

En sistemas PCI es utilizada por el PLUG &PLAY

12

Libre

En sistemas PCI es utilizada por el PLUG &PLAY

13

Sistema

Coprocesador Matemático – Todos los sistemas 486 DX y superiores lo poseen.

14

Sistema

Disco rígido –IDE- Solamente. Controladora primaria IDE Puede 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.

5 DESCRIBIR EL PROCEDIMIENTO PARA ACCEDER A UNA INTERRUPCIÓN. 5.1 HARDWARE DE LOS IRQ: Originalmente, las computadoras basadas en el procesador 8086 y 8088 (denominadas comúnmente tipo XT), poseían tan solo 8 posibles IRQ para los diferentes dispositivos que se deseen agregar a esas computadoras. La asignación para cada IRQ puede ser apreciada en la tabla adjunta. El IRQ número 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 ratón, el 5 para la atención del disco duro, el 6 para la atención de las disqueteras, y el 7 para el 14

puerto paralelo, donde va generalmente una impresora o un scanner. En definitiva, tan solo se podría 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 ¿cómo se ha logrado esto?, bueno, acá la respuesta: originalmente, en las computadoras XT, cualquier interrupción es atendida por un chip cuyo número es el 8259, también denominado Controlador De Interrupciones. Este chip tan solo tiene la capacidad de atender 8 interrupciones, es decir tienen físicamente 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 través del IRQ 2, como se puede observar en el gráfico. 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 número, y como todas las interrupciones del segundo controlador entran por la interrupción 2 del primero, las interrupciones número 8 a la número 15 tienen todas prioridad 2. El gráfico permite ver una asignación para cada interrupción, 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 algún dispositivo está empleando el IRQ 2, ningún otro podrá ser asignado al IRQ 9, por la razón antes mencionada.

5.2 ASIGNACIÓN DE LOS IRQ PARA EQUIPOS AT: La tabla adjunta puede ser obtenida a través de diversos programas, uno de los más conocidos es el MSD o Microsoft Diagnostic, programa que viene incluido dentro del mismo DOS. Es importante notar también que no todos los equipos tienen idéntica disposición 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 están por lo general 15

siempre asignados a señales de sincronización 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 pulsación de una tecla (por cierto que aún tipeando el mecanógrafo más diestro y veloz, el tiempo entre pulsación y pulsación es para el CPU una verdadera eternidad).

El IRQ 2 está destinado exclusivamente a la atención del segundo chip controlador 8259, aunque se lo pueda emplear en la práctica 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 análisis dijimos claramente que un mismo IRQ no puede ser compartido por dos o más dispositivos a la vez, como por ejemplo el modem y el ratón, que perfectamente se podría conectarlos al COM2 y al COM4, para que empleen el IRQ 3. Sin embargo este hecho ocasionaría que el momento en que el modem esté activo y el ratón también, el equipo se bloquee completamente, aparezcan extraños 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 razón, 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 ratón, y al COM2 el modem, de esta forma emplean el IRQ 4 y 3 respectivamente, sin crearse conflictos (en una edición 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 ratón 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 rótulo de (Reserved) , lo que significa que están disponibles para atender cualquiera 16

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 matemático y las unidades de discos duros respectivamente. Los nombres de las columnas son bastante claros, a excepción 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 símbolo ??? indica que el programa MSD no ha podido averiguar quién administra ese IRQ, cosa normal para el reloj del sistema, que funciona de forma autónoma.

6 INTERRUPCIONES POR SOFTWARE USADAS EN LA PC CUALES ESTÁN OCUPADAS Y CUALES DISPONIBLES. 6.1 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 interrupción. En este caso, en vez de que suceda inesperadamente, las interrupciones de software son generadas intencionalmente por un programa. Hay una instrucción especial de lenguaje ensamblador, llamado INT, que se usa por un programa para pedir una interrupción. Las interrupciones correspondientes al DOS. Son Las siguientes: 17

Nro

DESCRIPCIÓN

20H

Terminar Programa

21H

Petición de función

22H

Dirección de terminación Especifica la dirección a donde se bifurcará cuando se termine el programa. Esta dirección se copia sobre el PSP

23H

Dirección de Salida por CRTL-BREAK

24H

Manejador de error Critico

25H

Lectura de disco absoluta

26H

Grabación en Disco Absoluta

27H

Terminar pero quedar residente

28H

No se usa (Reservada)

3FH

No se usa (Reservada)

7 DISEÑO DE UN SISTEMA DE FORMA QUE PODAMOS PROBAR LAS INTERRUPCIONES DE AMBOS TIPOS . TRAER PROGRAMA PROBADO FUENTE Y COMPILADO El 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 Programa Graficador con control total del cursor. Con interrupciones de la ROM BIOS Compilado como EXE.

modot

dseg

macro mov mov int endm

ah,0h al,2h 10h

segment memo pan x1 y1 xx0 yy0 x0x y0y c01 c02

para 'datos' dw 0B800h dw 2000 dup(?) dw 20 dw 4 db 0 db 0 db 0 db 0 dw 0 dw 0

A263103.ASM

; Define el modo texto 80 x25 ; ; ; ; ;Segmento de datos, Definiciones en assembler ;Inicio de la pantalla ;Separa memoria sin inicializar ;Coordenadas esquina sup.izq. del menu. ;Coordenadas esquina sup.izq. del menu. ; ;

18

dseg

f01 f02 x2 y2 XX AA BB CC EE FF GG HH II JJ KK LL MM NN car fil col fi1 co1 color colo long1 long2 video ends

dw dw dw dw db db db db db db db db db db db db db db db dw dw dw dw dw db dw dw db

0 0 60 ;Coordenadas esquina inf.derecha del menu. 22 ;Coordenadas esquina inf.derecha del menu. '[7 3 3 3 3 3 3 3G7R7A7F7I7C7A7D7O7R7 3 3 3 3 3 3 3]7' ;Menu 'Fa18 M O D O T E X T O ' 'Fa28 M O V I M I E N T O C O N A R R A S T R E ' 'Fa38 M O V I M I E N T O C O N T R O L A D O ' 'Fa48 M O D O G R A F I C O ' 'Fa58 C U A D R A D O R E L L E N O ' 'Fa68 C U A D R A D O E N M O V I M I E N T O ' 'Fa78 M O V I M . E N P E R S P E C T I V . ' 'Fa88 M O V I M I E N T O D E L I N E A S ' 'Fa98 M O V I M I E N T O A N I M A D O ' 'Fa1808 G R A F I C A D O R ' ' E8S8C8 F I N ' ‘’ ‘’ ‘’ 0 ;fila actual 0 ;columna actual 0 ;fila anterior 0 ;columna anterior 0 ;color 0 0 0 11h ;Resolucion grafica 640 x 480

cseg

segment ;Programa principal. assume cs:cseg, ds:dseg, es:cseg, ss:cseg ini:jmp marco ;inicio de programa marco 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 ;

19

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 ;

20

marco

loop mov int endp

graf1 proc texto. modot mov mov mov call call push tecl: mov int cmp je cmp je cmp ap:pop ax ret z3:mov jmp graf1 endp

ir01 ah,4ch 21h near xx0,40 yy0,12 car,0dbh escrib punteroon ax ah,0h 16h ah,04dh de ah,04bh iz ah,048h

proc near modot mov xx0,40 mov yy0,12 mov car,0dbh call escrib call punteroon push ax tecla: mov ah,0h int 16h cmp ah,04dh w7: add yy0,01 jmp escrit escrit: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 ret graf2 endp

call cuad

proc modot call push push push push mov mov pixel loop ret endp

;Movimiento controlado de un caracter en modo ;Inicializa el modo texto. ; ;

yy0,00 w3

graf2

graf3

; ;Salida al DOS con codigo ; de errores. ;

;MOVIMIENTO TEXTO

;Activa mouse

near punteroon ax bx cx dx xx0,40 yy0,12 ir63

21

graf4 proc near mov col,61 mov cx,517 ale: inc col call pixel loop ale cmp fil,437 jl mar ret graf4 endp graf5 proc near call modo add fil,01 cmp long1,00 jg iiii ret graf5 endp graf6 proc near call modo call punteroon push ax i01:mov col,90 mov fil,10 mov long1,460 mov long2,460 i00:mov color,01 cmp al,27 jne i01 pop ax ret graf6 endp graf7 proc near call modo call punteroon mov col,19 mov fil,79 mov color,01 mov long1,300 mov col,320 mov fil,220 mov color,0fh call pixel push ax tcla: call guard mov ah,0h int 16h cmp ah,047h modo proc near mov ah,0h mov al,video int 10h ret mov 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

;CUADRADO RELLENO

;Fija modo de video ;modo de video, resolucion ;

22

ret endp proc mov mov mov MOV sal0:MOV mov add loop mov ret salva endp guard proc push push mov mov mov mov pop pop ret guard endp borra proc push push push mov mov mov mov int pop pop pop ret borra endp pixe1 proc push push push mov mov mov mov int pop pop pop ret pixe1 endp pixel proc push push push mov mov mov ret leerraton endp punteroxy proc mov sub int ret punteroxy endp escri salva

near ax,MEMO ES,ax di,0 cx,2000 ax,es:[DI] pan[di],ax di,2 sal0 ax,ds

;inicio de memoria de pantalla ; ;SAVE SCREEN ;longitud de pantalla ;

near ax bx ax,fil bx,col fi1,ax co1,bx bx ax near cx dx ax cx,co1 dx,fi1 ax,00h ah,0ch 10h ax dx cx near cx dx ax cx,col dx,fil al,0fh ah,0ch 10h ax dx cx near cx dx ax cx,col dx,fil ax,color

;color ;Escribe pixel

;color ;Escribe pixel

;color

near ax,4 bx,bx 51

23

resetraton proc near mov ax,0 int 51 ret resetraton endp cseg ends end ini

8 EL SETUP DE LA PC, LAS OPCIONES DE CONFIGURACIÓN Y LOS PARÁMETROS. 8.1 BIOS SETUP "Basic Input-Output System", sistema básico de entrada-salida. Programa incorporado en un chip de la placa base que se encarga de realizar las funciones básicas de manejo y configuración del ordenador. Estudiaremos a continuación como realizar el seteo del BIOS de un PC. Para ello nos basaremos en un BIOS AMI o AWARD, que son los más típicos y difundidos en nuestra plaza. Los BIOS de otros proveedores si bien tienen una estructura de menús 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 español. La pantalla principal de una BIOS clásica es algo así:

Mientras que la de una WinBIOS tiene este aspecto:

24

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 optimizándolos. Veremos a continuación los distintos menús y submenús, con una pequeña explicación de sus significados y seteos más habituales.

8.2 STANDARD CMOS SETUP En este menú podemos ajustar la fecha y hora del reloj del PC, declarar los parámetros 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á automáticamente cada vez que arranque el PC, pero esto consume tiempo en el arranque. Esta opción es útil en el caso de tener un disco IDE removible, pues nos asegura que siempre el sistema estará correctamente configurado.

25

8.3 ADVANCED CMOS SETUP Quick Boot – Esta opción nos permite elegir si queremos realizar un chequeo exhaustivo de la memoria y demás componentes del sistema, o uno rápido. La opción más 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 búsqueda de unidades de donde bootear 3rd Boot Device – Tercera unidad en el orden de búsqueda 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 opción el disco duro puede reportar a cierto software (no incluido en los sistemas operativos típicos) información acerca de su estado Floppy Drive Swap – En caso de tener más de una disquetera instalada, esta opción nos permite permutar las letras asignadas a ellas Floppy Drive Seek – Esta opción 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 sólo cuando se desea acceder al SETUP del BIOS . Todas las demás opciones de este menú no se deben modificar de sus valores por defecto.

8.4 ADVANCED CHIPSET SETUP Trend ChipAway Virus – Detección de virus a nivel del BIOS. Esta opción al activarla controla si algún 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 opción 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 opción indica que tipo de corrección de errores usa la memoria instalada, debe setearse de acuerdo a las características de la misma, o en caso de duda, deshabilitarse, eligiendo la opción “Non ECC”

26

On Board USB Function – Esta opción debe habilitarse si vamos a usar algún dispositivo USB, en caso contrario, deshabilitarla para ahorrar recursos El resto de las opciones deben dejarse en sus valores por defecto.

8.5 POWER MANAGEMENT SETUP Power Management– Esta opción permite configurar las características de ahorro de energía a través 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 automáticamente 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 opción depende de la tarjeta VGA utilizada. Típicamente, las tarjetas de alta performance deben llevar esta opción habilitada En este menú es donde podemos indicarle al BIOS que disponemos de algún dispositivo no Plug and Play, eligiendo para los recursos utilizados por ese dispositivo (DMA e IRQ) la opción ISA/EISA o ISA-Legacy en vez de la opción dada por defecto de PnP, o PCI/PnP. Los recursos marcados de esa forma no serán asignados por el BIOS a ningún dispositivo Plug and Play. Las demás opciones se dejarán en sus opciones por defecto. Load Optimal Settings Esta opción carga un conjunto de valores por defecto, que si bien no asegura el máximo rendimiento del PC, sí asegura que este funcionará. Load Best Performance Settings Como su nombre lo indica esta opción carga un conjunto de valores por defecto con los cuales el PC tendrá su máximo 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. También 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 estándar (Normal, o SPP), bidireccional (EPP), o mejorado (ECP). (Siempre que la impresora lo soporte debemos utilizar ésta última opción, pues es la de mayor velocidad de comunicación) En caso de que el motherboard incluya a bordo otros periféricos tales como tarjeta de video, sonido, red, modem, etc., desde este menú podemos habilitarlos o deshabilitarlos. 27

CPU Plug and Play Setup En los motherboards modernos, en vez de indicar las características del procesador por medio de jumpers, lo hacemos a través de menúes en el SETUP del BIOS. Normalmente esto se hace indicando dos parámetros: 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 más habituales son: 66MHz, 100MHZ, 133MHz, y ya están 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 errática. 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 opción 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 autodetección de todos los parámetros de todos los discos duros IDE instalados en los controladores incluidos en el motherboard, introduciendo automáticamente estos datos en el menú “Standard CMOS Setup”. En algunos BIOS, esta opción detecta además todos los otros dispositivos IDE conectados a los controladores En muchos BIOS actuales esta opción ha desaparecido, quedando integrada al menú Standard CMOS Setup donde se hace el proceso de autodetección de discos al presionar la tecla F3, u otra que indique el fabricante. Save Settings and Exit Esta opción nos permite abandonar el SETUP, luego de salvar los cambios realizados. Elegir esta opción es lo mismo que apretar la tecla [F10] en cualquier punto de este menú. Luego de elegirla (o presionar [F10] ) se nos solicita la confirmación, y presionando Y (yes) se reinicia el PC salvando los cambios realizados. Exit Without Saving Esta opción abandona el SETUP, dejando sin efecto los cambios realizados, y luego de confirmarlo, reinicia el PC 28

9 BIBLIOGRAFIA http://club.telepolis.com/mydream/Asm/ASM1.html http://www.uhu.es/tomas.mateo/ac2/manual%20ensamblador%20UHU.pdf

29

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF