martes, 27 de octubre de 2009

CALAVERA.


En la junta de maestros se rumora
Que la muerte ya anda rondando
Que se cuide Omar Bañuelos
Que es a el, al que anda buscando

Bañuelos todavía no se resigna
Y la muerte ya se esta cansando
La novia de Bañuelos se persina
y la muerte vuelve al campo santo.

La muerte no se va muy satisfecha
pero tampoco es para llorar
pues esta vez estuvo muy contenta
del susto que les vino a dar.

lunes, 26 de octubre de 2009

MODOS OPERACIONALES DEL CPU

Modo real
El modo real (también llamado modo de dirección real en los manuales de Intel) es un modo de operación del 80286 y posteriores CPUs compatibles de la arquitectura x86. El modo real está caracterizado por 20 bits de espacio de direcciones segmentado (significando que solamente se puede direccionar 1 MB de memoria), acceso directo del software a las rutinas del BIOS y el hardware periférico, y no tiene conceptos de protección de memoria o multitarea a nivel de hardware. Todos los CPUs x86 de las series del 80286 y posteriores empiezan en modo real al encenderse el computador; los CPUs 80186 y anteriores tenían solo un modo operacional, que era equivalente al modo real en chips posteriores.

Modo Protegido
El modo protegido es un modo operacional de los CPUs compatibles x86 de la serie 80286 y posteriores. El modo protegido tiene un número de nuevas características diseñadas para mejorar las multitareas y la estabilidad del sistema, como protección de memoria, y soporte de hardware para memoria virtual así como de conmutación de tareas. A veces es abreviado como p-mode y también llamado Protected Virtual Address Mode (Modo de Dirección Virtual Protegido) en el manual de referencia de programador del iAPX 286 de Intel, (Nota, iAPX 286 es solo otro nombre para el Intel 80286). En el 80386 y procesadores de 32 bits posteriores se agregó un sistema de paginación que es parte del modo protegido.
La mayoría de los
sistemas operativos x86 modernos corren en modo protegido, incluyendo Linux, FreeBSD, OpenBSD, NetBSD, y Microsoft Windows 3.0 y posteriores. (Windows 3.0 también corría en el modo real para la compatibilidad con las aplicaciones de Windows 2.x).

Modo Virtual
Es un modo operacional de la serie 80386 y posteriores. El VM86 permite que software para modo real pueda ejecutarse directamente en modo protegido.

Diferencias entre los 3 modos operacionales:
El 80386 permite la ejecución de programas para el 8086 tanto en modo real como en modo virtual 8086. De los dos métodos, el modo virtual es el que ofrece al diseñador del sistema la mayor flexibilidad. El modo virtual permite la ejecución de programas para el 8086 manteniendo el mecanismo de protección del 80386. En particular, esto permite la ejecución simultánea de sistemas operativos y aplicaciones para el 8086, y un sistema operativo 80386 corriendo aplicaciones escritas para el 80286 y el 80386. El escenario más común consiste en correr una o más aplicaciones de DOS simultáneamente mientras se corren programas escritos para Windows, todo al mismo tiempo.
Una de las mayores diferencias entre los modos real y protegido es cómo se interpretan los selectores de segmentos. Cuando el procesador ejecuta en modo virtual los registros de segmento se usan de la misma manera que en modo real. El contenido del registro de segmento se desplaza hacia la izquierda cuatro bits y luego se suma al offset para formar la dirección lineal.
El 80386 permite al sistema operativo especificar cuales son los programas que utilizan el mecanismo de direccionamiento del 8086, y los programas que utilizan el direccionamiento de modo protegido, según la tarea que pertenezcan (una tarea determinada corre en modo virtual o en modo protegido). Mediante el uso del paginado el espacio de direcciones de un megabyte del modo virtual se puede mapear en cualquier lugar dentro del espacio de direccionamiento de 4GB. Como en modo real, las direcciones efectivas (offsets) que superen los 64KB.http://es.wikipedia.org/wiki/Modo_real
http://wapedia.mobi/es/Modo_protegido
http://virtualoverhead.blogspot.com/2008/01/modos-operacionales-de-la-arquitectura.html
http://www.alpertron.com.ar/80386.HTM

DMA
Ya desde su concepción inicial, los diseñadores del PC dispusieron una arquitectura que permitiese este tipo de intercambios. El mecanismo utilizado se conoce como acceso directo a memoria DMA ("Direct Memory Access"), e igual que ocurre con las excepciones, el sistema DMA dispone de algunos elementos hardware auxiliares que lo convierten en un subsistema autónomo dentro del bus externo. Estos elementos son:

* Ciertas líneas dedicadas en el bus de control .
* Un procesador específico, el DMAC ("DMA Controller"), que permite que puedan realizarse estos intercambios sin apenas intervención del procesador
.
* Pequeñas zonas auxiliares de memoria, conocidas como Registros de página
.


Líneas de control


El bus de control ( H2) tiene líneas específicas para este tipo de intercambios, de forma que el DMA es un subsistema autónomo dentro del mecanismo general de intercambio de datos y control del bus. Son las siguientes:

°Líneas DRQ1 a DRQ3 ("DMA request").
°Líneas DACK1 a DACK3 ("DMA acknowledge"). °AEN ("Access Enabled"). °DMA(MEMR, MEMW, IOR, IOW, Etc).
°MEMR ("Memory Read").
°MEMW ("Memory Write").


Controlador DMA

El mecanismo de acceso directo a memoria está controlado por un chip específico, el DMAC ("DMA Controller"), que permite realizar estos intercambios sin apenas intervención del procesador. En los XT estaba integrado en un chip 8237A que proporcionaba 4 canales de 8 bits (puede mover solo 1 Byte cada vez); sus direcciones de puerto son 000-00Fh.

Cada canal tiene asignada una prioridad para el caso de recibirse simultáneamente varias peticiones (los números más bajos tienen prioridad más alta).


Funcionamiento

El mecanismo de acceso directo a memoria DMA es bastante complejo en sus detalles, y por supuesto, el movimiento de grandes volúmenes de datos entre memoria y un dispositivo requiere cierta intervención del procesador. El movimiento se hace a ráfagas, y cada transferencia se inicia con una interrupción que obliga al procesador a suspender su tarea para permitir un nuevo intercambio. A continuación intentaremos mostrar una visión general del proceso.

Para esto dispone de dos registros para cada línea; el contador y el registro de direcciones. Según se refieran a operaciones de lectura (memoria dispositivo) o escritura (dispositivo memoria) reciben distintos nombres porque su significado difiere:

*Escritura: Dirección de inicio ("Write starting address"). Contador ("Write starting word count")
*Lectura: Dirección actual de lectura ("Read current address"). Contador ("Read remaining word count")

Modos de operación


Aunque el mecanismo de transferencia se ajusta en lo sustancial al proceso anteriormente descrito, en realidad el controlador MDAC permite varios modos de operación:

§ Sencillo ("Single")
Este modo transfiere solo un byte cada vez. Después de cada transferencia el sistema cede el control del bus y debe adquirirlo de nuevo para transmitir el siguiente. Es utilizada por dispositivos que solo pueden transmitir 1 byte cada vez a intervalos comparativamente muy largos (periféricos lentos). Por ejemplo, el primitivo controlador de disquete del PC utilizaba este modo porque su bufer era de un byte. El ciclo solicitud adquisición del bus transferencia cesión del bus, se repite cuantas veces que sean necesarias.

§ Bloque ("Block") Las transferencias se realizan en bloques (un máximo de 64 KB). Se supone que el periférico es capaz de escribir/leer los datos a velocidad sostenida, porque una vez iniciada la transferencia, continúa hasta que se completa. En caso necesario el periférico puede solicitar una pausa momentánea mediante la línea CHRDY del bus ( 2), pero en general los dispositivos lentos utilizan el modo anterior.

§ Demanda ("Demand")
Como en el caso anterior, la transferencia se realiza en bloques, pero solo tiene lugar mientras el dispositivo mantiene activada la línea de "Petición" correspondiente (DRQ). En cuanto la desactiva, el DMAC cesa la transferencia y devuelve el control del bus al procesador. Si el dispositivo necesita transferir más datos debe solicitar otra transferencia.

§6.4 Cascada ("Cascade")
El procedimiento de transferencia descrito anteriormente, corresponde al primitivo sistema DMA ISA. Es conocido como DMA de tercer elemento ("Third party"), en relación a que en el proceso intervienen tres miembros: El dispositivo que envía los datos, el que los recibe y el controlador DMAC que sería el tercero (observe que en realidad, los datos NO pasan por él). Este enfoque pronto se mostró insuficiente para controlar los intercambios con dispositivos de alta velocidad, de forma que se arbitraron nuevas soluciones. El bus mastering o DMA de primer elemento ("First party"), llamado así en relación a que es el dispositivo que realiza el intercambio de datos (con la memoria) el que toma directamente el control del bus en lugar de hacerlo el controlador DMAC. En consecuencia, debe controlar las señales necesarias del bus (MEMR, MEMW, IOR, IOW, Etc).
Este procedimiento permite encadenar entre sí varios dispositivos DMA, y fue precisamente esta capacidad, la utilizada en el diseño del AT para añadir el segundo controlador. DMAC#2 se colocó en cascada con la línea 4 del DMAC#1. Cuando el DAMC#1 recibe una petición por el canal 4, cede el control del bus al dispositivo peticionario, el DMAC#2.

§ Autoinicialización ("Autoinicialize")
En esta forma las transferencias se realizan al modo Sencillo o Demanda, pero cuando la UCP vuelve a tomar el control y el dispositivo está listo para enviar o recibir nuevos datos, no es necesario reprogramar la siguiente transferencia. Si se estaban transfiriendo datos desde el dispositivo a un bufer de memoria, la UCP puede seguir añadiendo datos al bufer a continuación de los últimos transmitidos. Si era una transferencia de de datos desde un bufer hacia el dispositivo, la UCP puede seguir leyendo datos desde la última posición de leída y escribiéndolos en el dispositivo.
Esta técnica se utiliza con dispositivos que tienen bufers pequeños. Por ejemplo, dispositivos de audio. Supone cierta sobrecarga para la UCP, pero es la única forma de eliminar el retardo existente entre el momento en que termina una transferencia y se reprograma la siguiente.

http://zator.com/Hardware/H2_3.htm

jueves, 22 de octubre de 2009

INTERRUPCION 21H

INT 21H
La función 21H es la encargada de realizar las lecturas y escrituras aleatorias respectivamente.
El número de registro aleatorio y el bloque actual son usados para calcular la posición relativa del registro a leer o escribir.
El registro AL regresa la misma información que para lectura o escritura secuencial. La información que será leída se regresará en el área de transferencia de disco, así mismo la información que será escrita reside en el DTA.
Esta interrupción tiene varias funciones, para accesar a cada una de ellas es necesario que el el registro AH se encuentre el número de función que se requiera al momento de llamar a la interrupción.
Interrupción 21H Propósito: Llamar a diversas funciones del DOS.

Funciones para desplegar información al video.
02H Exhibe salida
09H Impresión de cadena (video)
40H Escritura en dispositivo/Archivo
Funciones para leer información del teclado.
01H Entrada desde teclado
0AH Entrada desde teclado usando buffer
3FH Lectura desde dispositivo/archivo
EJEMPLO:
El ejemplo pide entrada, lee hasta 10 caracteres y muestra los caracteres leídos. Si se especifican más de 10 caracteres, se mostrará sólo el primer 10. Si el programa se ejecuta a continuación, una segunda vez, los restantes caracteres (o el 10 de la siguiente, cualquiera que sea menor) se mostrarán inmediatamente. Se asignará el símbolo del sistema pero el programa no se espera para la entrada.

Código de ejemplo

.MODEL SMALL,C
.STACK
.DATA
mybuf BYTE 10 DUP (' ')
pstring BYTE 0Dh,0Ah,"enter data: "
ostring BYTE 0Dh,0Ah,"data entered: "

abyte BYTE ?
.CODE
.STARTUP
; prompt user
mov bx, 1 ; stdout
mov cx, LENGTHOF pstring
mov dx, SEG pstring
mov ds, dx
mov dx, OFFSET pstring
mov ah, 40h
INT 21h
; ignore possible errors

; read data
mov bx, 0 ; stdin
mov cx, LENGTHOF mybuf
mov dx, SEG mybuf
mov ds, dx
mov dx, OFFSET mybuf
mov ah, 3Fh
INT 21h
; ignore possible errors

mov bx, 1 ; stdout
mov cx, LENGTHOF ostring
mov dx, SEG ostring
mov ds, dx
mov dx, OFFSET ostring
mov ah, 40h
INT 21h
; ignore possible errors

mov bx, 1 ; stdout
mov cx, LENGTHOF mybuf
mov dx, SEG mybuf
mov ds, dx
mov dx, OFFSET mybuf
mov ah, 40h
INT 21h
; ignore possible errors

; clear buffer

mov bx, 0 ; stdin
mov cx, 1
mov dx, SEG abyte
mov ds, dx
mov dx, OFFSET abyte
mov ah, 3Fh
INT 21h
mov al, abyte
cmp al, 0Ah
jne clearbuf

.EXIT
END

REFERENCIAS:
http://moisesrbb.tripod.com/unidad6.htm
http://moisesrbb.tripod.com/unidad7.htm
http://support.microsoft.com/kb/113058/es

INTERRUPCIONES

INTERRUPCIONES


Las interrupciones alteran la secuencia normal de un programa para permitir una operación de E/S. Son particularmente útiles con periféricos lentos o en aplicaciones donde la ocurrencia de datos a ser transferidos a la computadora es impredecible como en enlaces de comunicación.
La principal característica es que : El intercambio de datos es iniciado por los dispositivos periféricos.





INTERRUPCIONES ENMASCARABLES


Las interrupciones ordinarias INT también pueden ser “enmascaradas” selectivamente por el programador. Haciendo uso de los flip flops IFF1 y IFF2 a “1” las interrupciones son autorizadas. Poniéndolas a cero (mascarándolos) se prevendrá la detección de INT. La instrucción EI es usada para habilitarlas y DI para deshabilitarlas.


Para que el microprocesador acepte esta interrupción, deben de cumplirse las siguientes condiciones :
1- Que las interrupciones hayan sido habilitadas previamente.
2- Que la entrada Busreq no esté activa.
3- Que la entrada NMI no esté activa.





INTERRUPCIONES NO ENMASCARABLES


Este tipo de interrupciones no puede ser inhibida por el programador. Es por esto que se dice que es no enmascarable. Siempre será aceptada por el Z80 hasta que finalice la instrucción en curso, asumiendo que no se ha recibido una requisición de buses (BUSREQ).





Referencia:

http://galia.fc.uaslp.mx/~cantocar/microprocesadores/TUTORIALES/EL_MICRO_Z80/INTERRUPCIONES_Z80.DOC

miércoles, 7 de octubre de 2009

¿POR QUE SON IMPORTANTES LOS BUSES?

1.-Por que se le pueden conectar varios dispositivos.
2.-Tienen lineas que ayudan a que la informacion pace por ellas, y
pueden ser 100 o 50 lineas las que lo componen.
3.-Todos los buses permiten la transferencia de escritura como
de lectura.

Welcome to our crazy world


Esperemos que nuestro blog les sirva de mucha ayuda para

algunas de sus cuestiones academicas o bien de trabajo, les

agradecemos que nos visiten.