Documentos de Académico
Documentos de Profesional
Documentos de Cultura
* Arquitectura en Pipeline
* Bus de datos de 16 bits.
* Bus de direcciones de 20 bits
Este registro nos permite seleccionar una sección de 64 Kb., que no está
destinada a ningún uso específico; por lo que el programador puede
aplicarla como comodín, generalmente como un segundo segmento de
datos; o bien, para el acceso a regiones de memoria del sistema, tales
como la memoria de video o las variables del BIOS
• Cola de Prefetch
Ya que el BIU trabaja en paralelo con el EU, requieren de un
mecanismo para comunicarse. Esto se logra con una cola,
estructura de datos que permite que el EU obtenga instrucciones
para ejecutar en el mismo orden en que el BIU las colocó en la
misma. Así, el EU puede solicitar instrucciones en cuanto esté listo
para ejecutar la siguiente, sin importar en qué paso está el BIU en la
obtención de instrucciones; y viceversa, el BIU puede continuar su
búsqueda de instrucciones, depositando la que acaba de obtener en
la cola, sin importar si el EU en este momento está ocupado
ejecutando.
• Generador de Direcciones Fisicas
Como las direcciones son de 20 bits, y los registros que nos permiten
accesarlas son de 16, se requiere de 2 registros para que en combinación
formen la dirección.
Esta combinación está basada en la arquitectura segmentada que
veremos más adelante. La función del generador de direcciones físicas
consiste en realizar esa combinación, para lo cual contiene la circuitería
necesaria para calcular la fórmula:
MOV acepta distintos modos de direccionamiento; las principales limitantes que tiene
son:
-Destino y fuente no pueden ser, ambos, referencias a memoria; al menos uno
de ellos debe ser un registro o una constante.
-El destino no puede ser una constante, debe ser un registro o una referencia a
memoria.
-Los registros de segmento solamente pueden usarse junto con un registro de
uso general.
-Destino y fuente deben tener el mismo "tipo" (ambos referencias a bytes, o a
word, pero no uno a byte y otro a word).
PUSH y POP requieren operandos de tamano Word. En 8086/88 tiene que ser un
registro o una localidad de memoria; en 80286 y superiores, la mejora principal es
que PUSH ya se puede hacer sobre una constante.
XCHG tiene las mismas características que MOV, con la única excepción de que no
acepta constantes de ninguno de los dos lados.
• Instrucciones Aritméticas
Instrucción Operandos Función equivalente en "C" Resultados
ADD op1, op2 op1 = op1 + op2
SUB op1, op2 op1 = op1 - op2
ADC op1, op2 op1 = op1 + op2 + Carry
SBB op1, op2 op1 = op1 - op2 - Carry
INC op1 op1 ++;
DEC op1 op1 --;
MUL op1 Si op1 es tipo byte: AX = AL * op1
Si op1 es tipo word: (DX:AX) = AX * op1
DIV op1 Si op1 es tipo byte: AL = AX / op1
AH = AX % op1
Si op1 es tipo word: AX = (DX : AX) / op1
DX = (DX : AX) % op1
NEG op1 op1 = - op1
• Manejo de Bits (Rotaciones y Desplazamientos)
Instrucción Operandos Función equivalente en "C"
SHL op1, cuenta op1 <<= cuenta
SHR op1, cuenta op1 >>= cuenta
SAR op1, cuenta (no hay equivalente)
ROL op1, cuenta (no hay equivalente)
ROR op1, cuenta (no hay equivalente)
En todas las instrucciones de rotación/desplazamiento de bits, cuenta puede
ser 1 o bien CX.
• Uso de procedimientos/subrutinas
Instrucción Operandos Función equivalente en "C"
CALL etiqueta Llamada a función
PUSH IP
PUSH CS ; Sólo si es llamada larga (CALL FAR)
JMP etiqueta
RET (ninguno) return
POP IP-temp
POP CS-temp ; Sólo si es llamada larga (RETF)
JMP CS-temp:IP-temp
• Principales Directivas (TASM)
¿Qué es una directiva?
.code
Esta directiva indicará al ensamblador dónde inicia el código. A partir de
ella, se encontrarán las instrucciones propiamente dichas.
• Principales Directivas (TASM)
Para uso de procedimientos:
<etiqueta> PROC
Asocia una etiqueta a un procedimiento. Por ejemplo, si ponemos:
Principal PROC esto definirá el punto de inicio del procedimiento
llamado "Principal".
<etiqueta> ENDP
Cierra un procedimiento, debe estar balanceado con un PROC para
abrirlo.
END {etiqueta}
Cierra un módulo de programa. Esta directiva le indica al Ensamblador
que ignore cualquier cosa que venga después; es como decirle que ahí
acabó el archivo con el código fuente.
El parámetro (opcional) "etiqueta" indica en qué procedimiento iniciará
la ejecución del programa. En caso de omitirse el parámetro opcional,
la ejecución se inicia en la primera instrucción después de la directiva
.code.
• Principales Directivas (TASM)
Definición de constantes
<identificador> EQU <expresión>
Define una constante llamada como el identificador, en una forma similar al
#define de C. Es decir, cada vez que se encuentre el identificador en el
programa fuente, se sustituirá (como texto) por la expresión indicada en el
EQU.
<identificador> = <expresión>
Es similar al EQU, solamente que en este caso podrá variarse (redefinirse)
la sustitución que corresponde al identificador.