Tema 1 Introducción Índice Arquitectura del i8086

Anuncio
Estructura de Computadores:
Tema 1
El procesador
Índice
z
z
Arquitectura del i8086
Registros del i8086
Introducción
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
z
Arquitectura del i8086
z
z
– Manejo de bytes
z
– Busqueda
– Decodificación
– Ejecución
Gestion de Memoria
– Esquema de almacenamiento
z
z
z
¿dónde está el PC?
Ensamblador del i8086
Mapa de memoria de un programa
Máquina de programa almacenado.
Ciclo de instrucción
z
z
B.I.U.: Unidad de Intefaz con el Bus. Direcciona
la memoria. Busca las instrucciones y las guarda
en una cola.
E.U.: Unidad de Ejecución. Decodifica y ejecuta
la instrucción.
Los registros del i8086
z
Dispone de 14 registros de 16 bits.
–
–
–
–
–
4 generales: AX, BX, CX y DX.
4 de segmento: CS, SS, DS, ES.
3 punteros: SP, BP, IP.
2 de índice: SI, DI.
1 de Flags. Se usan 9 de los 16 bits.
Manejo de bytes
Se pueden realizar transferencias y
operaciones sobre datos de 1 byte.
z Los registros AX, BX, CX y DX se pueden
direccionar como dos registros de 8 bits
cada uno.
z Estos registros se llaman: AH, AL; BH,
BL; CH, CL; y DH, DL.
z
– H (High): byte más significativo
– L (Low): byte menos significativo.
6 bits de estado: CF, OF, ZF, PF, SF, AF.
z 3 bits de control: DF, IF, TF.
z
Gestion de la Memoria (BIU)
Direcciona la memoria a nivel de byte.
z Utiliza 20 bits de direcciones (1 Mbyte).
Esquema de Almacenamiento
z
– Los registros son de 16 bits!!!
– La BIU se encarga de generar las direcciones
z
Dirección lógica
– segmento:desplazamiento
z
Dirección física
– segmento*10h+desplazamiento
z
El segmento lo indica un registro de
segmento.
Utiliza el convenio Little-Endian: “el byte
menos significativo ocupa la posición más
baja”.
z Otras máquinas utilizan el convenio
opuesto (Big-Endian).
z El número 11FFh en la posición 14h de
memoria se almacena: FFh (1 byte) en la
posición 14h y 11h en la posición 15h.
z
¿dónde está el PC?
z
z
z
z
z
z
z
NO existe un registro PC (Program Counter).
La siguiente instrucción a ejecutar está en una
posición de la memoria de 1Mb, luego
necesitamos 20 bits para direccionar.
Como hemos visto, los registros son de 16 bits,
así que necesitamos saber el segmento y el
desplazamiento (dirección lógica) para calcular
la dirección física.
Registro de segmento: CS (Code Segment)
Desplazamiento: IP (Instruction Pointer)
La siguiente instrucción está en CS:IP
Los registros CS e IP se encuentran en la BIU
Objetos
Constantes: valores numéricos.
z Variables: nombre que apunta a una
dirección de memoria donde se almacena
un valor.
z Etiqueta: nombre simbólico que acompaña
a una instrucción, apunta a esa dirección.
z
El ensamblador
Segmentos: datos, pila y código.
z Objetos: constantes, variables y etiquetas.
z Instrucciones: transferencia de datos,
transferencias de control, aritméticas,
manejo de bits, manejo de cadenas, de
control (flags) e interrupciones.
z Directivas: asignación, segmento,
procedimiento, operando y macros.
z
N EQU –3
DATOS SEGMENT ;Segmento de datos
A1 dw –1
A2 dw 7777h
DATOS ENDS
PILA SEGMENT STACK ;Segmento de pila
DB 64 DUP (‘?’)
PILA ENDS
CODIGO SEGMENT ;Segmento de codigo
ASSUME CS:CODIGO, SS:PILA, DS:DATOS
INICIO: MOV AX, DATOS
MOV DS, AX
ETIQ1: MOV AX, A1
MOV BX, A2
ADD AX, BX
MOV AX, 4C00h
INT 21h ;para volver al DOS
CODIGO ENDS
END INICIO
Instrucciones
z
z
z
z
z
z
z
Transferencia de datos: IN, LEA, MOV, OUT,
POP, PUSH, ...
Aritméticas: ADD,DEC,DIV,INC,MUL,SUB, ...
Manejo de bits: AND, NOT, OR, ROL, ROR,
SHL, SHR, ...
Transferecia de control: CALL, JMP, LOOP,
RET, J(cond), JN(cond).
Manejo de cadenas: MOVS, ...
Interrupcion: INT, IRET.
De control: CLC, CLD, CLI, ...
Directivas
Asignación: EQU,=,DB,DW,DD,DQ,DT.
z Segmento: ASSUME, SEGMENT, ENDS,
STACK (modificador).
z Procdimiento: PROC, ENDP.
z Fin de programa: END.
z Operando: +,-,*, /, AND, OR, NOT, SEG,
OFFSET, PTR.
z Macros: MACRO, ENDM.
z
N EQU –3
DATOS SEGMENT ;Segmento de datos
A1 dw –1
A2 dw 7777h
DATOS ENDS
PILA SEGMENT STACK ;Segmento de pila
DB 64 DUP (‘?’)
PILA ENDS
CODIGO SEGMENT ;Segmento de codigo
ASSUME CS:CODIGO, SS:PILA, DS:DATOS
INICIO: MOV AX, DATOS
MOV DS, AX
ETIQ1: MOV AX, A1
MOV BX, A2
ADD AX, BX
MOV AX, 4C00h
INT 21h ;para volver al DOS
CODIGO ENDS
END INICIO
N EQU –3
DATOS SEGMENT ;Segmento de datos
A1 dw –1
A2 dw 7777h
DATOS ENDS
PILA SEGMENT STACK ;Segmento de pila
DB 64 DUP (‘?’)
PILA ENDS
CODIGO SEGMENT ;Segmento de codigo
ASSUME CS:CODIGO, SS:PILA, DS:DATOS
INICIO: MOV AX, DATOS
MOV DS, AX
ETIQ1: MOV AX, A1
MOV BX, A2
ADD AX, BX
MOV AX, 4C00h
INT 21h ;para volver al DOS
CODIGO ENDS
END INICIO
Mapa de memoria
z
Posiciones de los segmentos de un
programa en la memoria
– Siempre empiezan en una posición múltiplo
de 10h.
z
Valor de los registros de segmento
– Hay que inicializar DS y ES.
z
El PSP (Program Segment Prefix)
Fuentes de información
adicionales
Bibliografía recomendada en el programa
de la asignatura (en biblioteca).
z Guión de la práctica 1 (en reprografía).
z Guías Norton, HelpPC (en los ordenadores
del laboratorio)
z
Descargar