You are on page 1of 5

Estructura de Computadores:

Introducción
Tema 1
El procesador z Estudiaremos la arquitectura del
procesador i8086 (CPU, registros, ...), su
gestion de la memoria y su conjunto de
instrucciones.
z Programaremos en lenguaje ensamblador
z Todo esto lo enlazaremos con los
conocimientos previos de Tecnología de
Computadores

Índice Arquitectura del i8086


z Arquitectura del i8086 z Máquina de programa almacenado.
z Registros del i8086 z Ciclo de instrucción
– Manejo de bytes – Busqueda
z Gestion de Memoria – Decodificación
– Esquema de almacenamiento – Ejecución
z ¿dónde está el PC? z B.I.U.: Unidad de Intefaz con el Bus. Direcciona
z Ensamblador del i8086 la memoria. Busca las instrucciones y las guarda
en una cola.
z Mapa de memoria de un programa
z E.U.: Unidad de Ejecución. Decodifica y ejecuta
la instrucción.
Los registros del i8086 Manejo de bytes
z Dispone de 14 registros de 16 bits. z Se pueden realizar transferencias y
– 4 generales: AX, BX, CX y DX. operaciones sobre datos de 1 byte.
z Los registros AX, BX, CX y DX se pueden
– 4 de segmento: CS, SS, DS, ES.
direccionar como dos registros de 8 bits
– 3 punteros: SP, BP, IP. cada uno.
– 2 de índice: SI, DI. z Estos registros se llaman: AH, AL; BH,
– 1 de Flags. Se usan 9 de los 16 bits. BL; CH, CL; y DH, DL.
z 6 bits de estado: CF, OF, ZF, PF, SF, AF. – H (High): byte más significativo
z 3 bits de control: DF, IF, TF. – L (Low): byte menos significativo.

Gestion de la Memoria (BIU) Esquema de Almacenamiento


z Direcciona la memoria a nivel de byte.
z Utiliza 20 bits de direcciones (1 Mbyte). z Utiliza el convenio Little-Endian: “el byte
– Los registros son de 16 bits!!! menos significativo ocupa la posición más
– La BIU se encarga de generar las direcciones baja”.
z Dirección lógica z Otras máquinas utilizan el convenio
– segmento:desplazamiento opuesto (Big-Endian).
z Dirección física z El número 11FFh en la posición 14h de
– segmento*10h+desplazamiento memoria se almacena: FFh (1 byte) en la
z El segmento lo indica un registro de posición 14h y 11h en la posición 15h.
segmento.
¿dónde está el PC? El ensamblador
z NO existe un registro PC (Program Counter).
z La siguiente instrucción a ejecutar está en una z Segmentos: datos, pila y código.
posición de la memoria de 1Mb, luego
necesitamos 20 bits para direccionar. z Objetos: constantes, variables y etiquetas.
z Como hemos visto, los registros son de 16 bits, z Instrucciones: transferencia de datos,
así que necesitamos saber el segmento y el transferencias de control, aritméticas,
desplazamiento (dirección lógica) para calcular
la dirección física. manejo de bits, manejo de cadenas, de
z Registro de segmento: CS (Code Segment) control (flags) e interrupciones.
z Desplazamiento: IP (Instruction Pointer) z Directivas: asignación, segmento,
z La siguiente instrucción está en CS:IP procedimiento, operando y macros.
z Los registros CS e IP se encuentran en la BIU

N EQU –3
DATOS SEGMENT ;Segmento de datos

Objetos A1 dw –1
A2 dw 7777h
DATOS ENDS
PILA SEGMENT STACK ;Segmento de pila
z Constantes: valores numéricos. DB 64 DUP (‘?’)
PILA ENDS
z Variables: nombre que apunta a una CODIGO SEGMENT ;Segmento de codigo
dirección de memoria donde se almacena ASSUME CS:CODIGO, SS:PILA, DS:DATOS
INICIO: MOV AX, DATOS
un valor. MOV DS, AX
z Etiqueta: nombre simbólico que acompaña ETIQ1: MOV AX, A1
MOV BX, A2
a una instrucción, apunta a esa dirección. ADD AX, BX
MOV AX, 4C00h
INT 21h ;para volver al DOS
CODIGO ENDS
END INICIO
N EQU –3
DATOS SEGMENT ;Segmento de datos

Instrucciones A1 dw –1
A2 dw 7777h
DATOS ENDS
PILA SEGMENT STACK ;Segmento de pila
z Transferencia de datos: IN, LEA, MOV, OUT, DB 64 DUP (‘?’)
POP, PUSH, ... PILA ENDS
z Aritméticas: ADD,DEC,DIV,INC,MUL,SUB, ... CODIGO SEGMENT ;Segmento de codigo
ASSUME CS:CODIGO, SS:PILA, DS:DATOS
z Manejo de bits: AND, NOT, OR, ROL, ROR, INICIO: MOV AX, DATOS
SHL, SHR, ... MOV DS, AX
z Transferecia de control: CALL, JMP, LOOP, ETIQ1: MOV AX, A1
RET, J(cond), JN(cond). MOV BX, A2
ADD AX, BX
z Manejo de cadenas: MOVS, ... MOV AX, 4C00h
z Interrupcion: INT, IRET. INT 21h ;para volver al DOS
CODIGO ENDS
z De control: CLC, CLD, CLI, ... END INICIO

N EQU –3
DATOS SEGMENT ;Segmento de datos

Directivas A1 dw –1
A2 dw 7777h
DATOS ENDS
PILA SEGMENT STACK ;Segmento de pila
z Asignación: EQU,=,DB,DW,DD,DQ,DT. DB 64 DUP (‘?’)
PILA ENDS
z Segmento: ASSUME, SEGMENT, ENDS, CODIGO SEGMENT ;Segmento de codigo
STACK (modificador). ASSUME CS:CODIGO, SS:PILA, DS:DATOS
INICIO: MOV AX, DATOS
z Procdimiento: PROC, ENDP. MOV DS, AX
ETIQ1: MOV AX, A1
z Fin de programa: END. MOV BX, A2
z Operando: +,-,*, /, AND, OR, NOT, SEG, ADD AX, BX
MOV AX, 4C00h
OFFSET, PTR. INT 21h ;para volver al DOS
CODIGO ENDS
z Macros: MACRO, ENDM. END INICIO
Fuentes de información
Mapa de memoria
adicionales
z Posiciones de los segmentos de un z Bibliografía recomendada en el programa
programa en la memoria de la asignatura (en biblioteca).
– Siempre empiezan en una posición múltiplo z Guión de la práctica 1 (en reprografía).
de 10h. z Guías Norton, HelpPC (en los ordenadores
z Valor de los registros de segmento del laboratorio)
– Hay que inicializar DS y ES.
z El PSP (Program Segment Prefix)

You might also like