Professional Documents
Culture Documents
1. Introducción al Lenguaje
Ensamblador
Lenguajes de Interfaz
1
27/4/18
2
27/4/18
Definición:
3
27/4/18
4
27/4/18
10
5
27/4/18
11
12
6
27/4/18
14
7
27/4/18
16
8
27/4/18
17
18
9
27/4/18
19
20
10
27/4/18
21
… 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
1 0 0 0 1 1 0 1 1 1 0 0 1 0 1 1
22
11
27/4/18
Los registros del procesador tienen como misión fundamental almacenar las posiciones de
memoria que van a sufrir repetidas manipulaciones, ya que los accesos a memoria son mucho más
lentos que los accesos a los registros. El 8086 dispone de 14 registros de 16 bits que se emplean
para controlar la ejecución de instrucciones, direccionar la memoria y proporcionar capacidad
aritmética y lógica. Cada registro puede almacenar datos o direcciones de memoria. Los registros
son direccionables por medio de un nombre. Por convención los bits de un registro se numeran de
1.2 El procesador y sus registros internos
derecha a izquierda:
15 14 13 12 11 10 9 8
• Los
1
registros
0 0
del
0
8086
0
se
1
clasifican
1 0
en:17 6
0
5
0
4
0
3
1
2
1
1
1
0
0
• registros de propósito general o de datos, registros de segmento, registro
apuntador de instrucciones
Los diferentes (IP),
registros del 8086 registrosen:
se clasifican apuntadores (SP y BP),
registros de propósito registros
general o de datos,
índice
registros de(SI y DI) y registro
segmento, de banderas,
registro apuntador FLAGS o (IP),
de instrucciones registro de estado
registros (FL).(SP y BP),
apuntadores
registros índice (SI y DI) y registro de banderas, FLAGS o registro de estado (FL).
AX SP CS IP
BX BP DS FLAGS o FL
CX SI SS Registro puntero
DX DI ES de instrucciones;
Registros de Registros Registros de y Registro de
propósito punteros y segmento banderas,
general Registros FLAGS o de
o de datos índice estado (FL)
Se utilizan para cálculo y almacenamiento de propósito general. Los programas leen datos de
memoria y los dejan en estos registros, ejecutan operaciones sobre ellos, y guardan los resultados en
memoria. Hay cuatro registros de propósito general que, aparte de ser usados a voluntad por el
programador, tienen fines específicos:
24
12
27/4/18
Registro DS
• La dirección inicial de un segmento de datos de programa es
almacenada en el registro DS.
25
Registro SS
• El registro SS permite la colocación en memoria de una pila, para
almacenamiento temporal de direcciones y datos.
• El DOS almacena la dirección de inicio del segmento de pila de un
programa en el registro SS.
• Esta dirección de segmento, más un valor de desplazamiento en el
registro del apuntador de pila (SP), indica la palabra actual en la pila
que está siendo direccionada.
26
13
27/4/18
Registros ES
• Algunas operaciones con cadenas de caracteres (datos de caracteres)
u3lizan el registro extra de segmento para manejar el
direccionamiento de memoria.
• En este contexto, el registro ES está asociado con el registro DI
(índice).
• Un programa que requiere el uso del registro ES puede inicializarlo
con una dirección de segmento apropiada.
27
Registros FS y GS
• Son registros extra de segmento en los procesadores 80386 y
posteriores.
28
14
27/4/18
29
Registro AX
• El registro AX, el acumulador principal, es u5lizado para operaciones
que implican entrada/salida y la mayor parte de la aritmé5ca.
AX: AH AL
EAX:
30
15
27/4/18
Registro BX
• El BX es conocido como el registro base ya que es el único registro de
propósito general que puede ser índice para direccionamiento
indexado.
• También es común emplear el BX para cálculos.
BX: BH BL
EBX:
31
Registro DX
• El DX es conocido como l registro de datos.
• Alguna operaciones de entrada/salida requieren uso, y las
operaciones de mul:plicación y división con cifras grandes suponen al
DX y al AX trabajando juntos.
DX: DH DL
EDX:
16
27/4/18
34
17
27/4/18
35
Registros Apuntadores
36
18
27/4/18
Registro SP
• El apuntador de la pila de 16 bits está asociado con el registro SS y
proporciona un valor de desplazamiento que se refiere a la palabra
actual que está siendo procesada en la pila.
• Los procesadores 80386 y posteriores Aenen un apuntador de pila de
32 bits, el registro ESP.
• El sistema maneja de forma automáAca estos registros.
37
Registro SP
• En el ejemplo siguiente, el registro SS con3ene la dirección de segmento
27B3 [0]H y el SP el desplazamiento 312H.
• Para encontrar la palabra actual que está siendo procesada en la pila, la
computadora combina las direcciones en el SS y el SP:
Dirección de segmento en el registro SS: 27B30H
Desplazamiento en el registro SP: + 312H
Dirección de la pila: 27E42H
27B3[0]H 312H
38
Dirección del segmento SS Desplazamiento del SP
19
27/4/18
Registro BP
• El BP de 16 bits facilita la referencia de parámetros, los cuales son
datos y direcciones transmi:dos vía pila.
39
Registro SI
• El registro índice fuente de 16 bits es requerido por algunas
operaciones con cadenas (de caracteres).
• En este contexto, el SI esta asociado con el registro DS.
• Los procesadores 80386 y posteriores permiten el uso de un registro
ampliado de 32 bits, el ESI.
40
20
27/4/18
Registro DI
• El registro índice des/no también es requerido por algunas
operaciones con cadenas de caracteres.
• En este contexto, el DI esta asociado con el registro ES.
• Los procesadores 80386 y posteriores permiten el uso de un registro
ampliado de 32 bits, el EDI.
41
42
21
27/4/18
OF (Overflow, desbordamiento)
• Indica desbordamiento de un bit de orden alto (más a la izquierda)
después de una operación aritmé9ca.
DF (dirección)
• Designa la dirección hacia la izquierda o hacia la derecha para mover
o comparar cadenas de caracteres.
43
IF (interrupción)
• Indica que una interrupción externa, como la entrada desde el teclado, sea
procesada o ignorada.
TF (trampa)
• Permite la operación del procesador en modo de un paso.
• Los programas depuradores, como el DEBUG, ac>van esta bandera de
manera que usted pueda avanzar en la ejecución de una sola instrucción a
un >empo, para examinar el efecto de esa instrucción sobre los registros de
memoria.
44
22
27/4/18
IF (interrupción)
• Con$ene el signo resultante de una operación aritmé$ca (0 = posi$vo y 1 =
nega$vo).
ZF (cero)
• Indica el resultado de una operación aritmé$ca o de comparación (0 = resultado
diferente de cero y 1 = resultado igual a cero).
AF (acarreo auxiliar)
• Con$ene un acarreo externo del bit 3 en un dato de 8 bits para aritmé$ca
especializada.
45
PF (paridad)
• Indica paridad par o impar de una operación en datos de 8 bits de
bajo orden (más a la derecha).
CF (acarreo)
• Con;ene el acarreo de orden más alto (más a la izquierda) después de
una operación aritmé;ca; también lleva el contenido del ul;mo bit en
una operación de corrimiento o de rotación.
46
23
27/4/18
48
24
27/4/18
49
50
25
27/4/18
51
52
26
Los registros de segmentos contienen la dirección inicial de cada segmento. La
figura 3.1 presenta un esquema de los registros CS, DS y SS; los registros y
segmentos no necesariamente están en el orden mostrado. Otros registros de 27/4/18
segmentos son el ES (segmento extra) y, en los procesadores 80386 y
posteriores, los registros FS y GS, que contienen usos especializados.
LIMITES DE LOS SEGMENTOS sea apropiado, el texto indica al cero de la derecha con corchetes, como 045F[0].
53
27
27/4/18
• Un desplazamiento de dos bytes (16 bits) puede estar en el rango de 0000H hasta
FFFFH, o bien, desde cero hasta 65, 535.
28
27/4/18
Un desplazamiento de dos bytes (16 bits) puede estar en el rango de 0000H hasta
FFFFH, o bien, desde cero hasta 65, 535. Así el primer byte del segmento de
código tiene un desplazamiento 00, el segundo byte tiene un desplazamiento 01,
etc. hasta el desplazamiento 65, 535. Para referir cualquier dirección de memoria
en un segmento, el procesador combina la dirección del segmento en un registro
de segmento con un valor de desplazamiento.
1.2 El procesador y sus registros internos
En el ejemplo siguiente, el registro DS contiene la dirección de segmento del
segmento de datos en 045F[0]H y una instrucción hace referencia a una localidad
LIMITES DE LOSconSEGMENTOS
un desplazamiento de 0032H bytes dentro del segmento de datos.
DESPLAZAMIENTO
Dirección Desplazamiento:
04622H; 045F0H
Dirección real: +0032H
Del segmentoDirección
DS: del 04622H
segmento DS: 045F0H
Desplazamiento: +0032H
Dirección real: 04622H 58
29