Professional Documents
Culture Documents
Arquitectura de
Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
ndice
2 / 51
52
z
z
z
z
z
Introduccin
Juego de instrucciones
Estructura de un programa ensamblador del P i80x86/88
Modos de direccionamiento
Ejemplo de hardware real: P i80x86/88
Segmentacin de memoria en P i80x86/88
Modos de direccionamiento en el P i80x86/88
Formato de instrucciones:
Ejemplos de instrucciones
Formato de instrucciones en P i80x86/88
Bibliografa
Arquitectura de Computadores I
Introduccin (I)
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
Instruccin:
z Operacin expresada mediante la codificacin binaria de
cadenas de 1's y 0's. Se le denomina lenguaje mquina
z
3 / 51
52
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
Introduccin (II)
4 / 51
52
Programa
Consiste en un conjunto ordenado de instrucciones que resuelve una
determinada tarea del computador
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
5 / 51
52
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
6 / 51
52
z
z
z
z
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
z
z
PUSH AX
========>
AX 89AB
BX CDEF
SS:SP - 2
123
SS:SP
4567
SS:SP + 2
POP BX
*. SP debe
========>
apuntar a la
AX 89AB posicin
AX 89AB
inmediatamente
BX CDEF superior
BX 89AB
*. Se mueve el
contenido de la
SS:SP 89AB palabra
SS:SP - 2 89AB
SS:SP + 2 4567 especificada por SS:SP 4567
el operando
SS:SP + 4
SS:SP + 2
fuente a SP
7 / 51
52
*. SP apunta al ltimo
elemento depositado en la
pila
*. Se realiza el movimiento
de la palabra SP al
operando destino
*. SP ahora debe apuntar al
nuevo ltimo elemento de
la pila
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
8 / 51
52
Instrucciones aritmticas:
z
ADD: Suma sin acarreo
z
ADC: Suma con acarreo
z
SUB: Resta sin acarreo
z
SBB: Resta con acarreo
z
MUL: Multiplicacin sin signo
z
IMUL: Multiplicacin con signo
z
DIV: Divisin sin signo
z
IDIV: Divisin con signo
z
INC: Incrementar destino a uno
z
DEC: Decrementar destino a uno
z
NEG: Cambia de signo (negar) dejando el operando en Ca2
z
CMP: Compara operandos
Instrucciones lgicas:
z
AND, NOT, OR, XOR
z
Estas operaciones se realizan bit a bit
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
z
z
z
z
9 / 51
52
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
[N]
Z Cero
E Igual
C Acarreo
S Signo
O Overflow (Desbordamiento)
[N][E]
G Mayor que
L Menor que
A Superior*
B Inferior*
P Paridad
PE Paridad par
PO Paridad impar
z
10
10 // 52
51
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
Bucles
z Son instrucciones especiales que agrupan dos operaciones que suelen ir
asociadas en muchas ocasiones
z La operacin de decremento de un contador y un salto condicional sobre
esa operacin
z El nmero de iteraciones se determina mediante el valor del registro CX
(contador)
Sintaxis lgica
LOOP etiqueta (realiza un bucle)
CX CX 1;
Si CX HQWRQFHV,3etiqueta, VLQR,3VLJXLHQWHLQVWUXFFLyQ
Ejemplo:
MOV CX, 4
Bucle:
INC BX
ADD BX, CX
LOOP Bucle
11
11 // 52
51
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
12
12 // 52
51
1234h
Direccin de retorno
1234h
,3'LUHFFLyQGHODVXEUXWLQD
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
Direccin de retorno
1234h
SP
1234h
,3'LUHFFLyQGHUHWRUQRGHODVXEUXWLQD
13
13 // 52
51
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
14
14 // 52
51
z
z
z
Ej:
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
Direccin de retorno
Flags
1234h
1234h
3,3'LUHFFLyQGHODLQWHUUXSFLyQ
15
15 // 52
51
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
16
16 // 52
51
Direccin de retorno
Flags
1234h
SP
1234h
,3'LUHFFLyQGHODVXEUXWLQD
3) Flags Flags anteriores a la llamada de la interrupcin
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
Instrucciones de bit:
z Modifican un solo bit o leen su estado. Son tpicas en la configuracin de
los flags
z TEST:
Comparacin lgica de dos operandos a nivel de bits (AND)
z CLI:
Clear flag de interrupcin (flag de interrupcin = 0)
z STI:
Set flag de interrupcin (flag de interrupcin = 1)
z CLC:
Clear flag de acarreo (flag de acarreo = 0)
z STC:
Set flag de acarreo (flag de acarreo = 1)
17
17 // 52
51
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
18
18 // 52
51
Instrucciones de desplazamiento:
z SAR:
Desplazamiento aritmtico a la derecha
z SAL:
Desplazamiento aritmtico a la izquierda
z SHR:
Desplazamiento lgico a la derecha
z SHL:
Desplazamiento lgico a la izquierda
z ROR:
Rotacin a la derecha
z ROL:
Rotacin a la izquierda
z RCR:
Rotacin a la derecha a travs del acarreo
z RCL:
Rotacin a la izquierda a travs del acarreo
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
19
19 // 52
51
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
20
20 // 52
51
dosseg
.model small
.stack 100h
.data
.code
mov ds, ax
% Fin del segmento de cdigo %
mov AH, 4Ch
; terminacin del programa y devolucin del
int 21h
; control al DOS
end
; fin de programa
z
z
z
z
z
z
z
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
21
21 // 52
51
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
22
22 // 52
51
dosseg
.model small
.stack 100h
.data
% Definicin de datos %
Texto DB +RODPXQGR
.code
mov AX, @data
mov DS, AX
mov AH, 9
lea DX, Texto
int 21h
% Fin del segmento de cdigo %
mov Ah, 4Ch
; terminacin del programa y
int 21h
; devolucin del control a DOS
end
; fin de programa
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
Relativo
Ejemplos
Inmediato
De registro
De memoria
De pgina base
A registro
(No existe)
Directo
MOV AX, BX
Al contador de
programa
A un registro base
A un registro ndice
Mediante ndice
Mediante ndice y
base
A pila
A pila
23
23 // 52
51
3 8086/88
Relativo a base
Indirecto
(No existe)
Implcito
Algunas instrucciones
MOV BX + ARTCULO,
AL
MOV DL, VECTOR[SI]
MOV AH, [BH][SI] +
ARRAY
PUSH BX
Clasificacin de
los modos de
direccionamiento
en el 8086/88
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
24
24 // 52
51
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
Inmediato
dato
Instruccin
dato
Banco de
registros
z
dato
Memoria
25
25 // 52
51
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
26
26 // 52
51
Relativo
registro
direccin
desplaz.
Instruccin
dato
Memoria
z
registro 2
base o ndice
dato
desplaz.
Banco de
registros
Memoria
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
Indirecto de registro
registro
Instruccin
dato
direccin
Banco de
registros
z
Memoria
Indirecto absoluto
direccin 1
dato
Instruccin
direccin 2
Memoria
27
27 // 52
51
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
28
28 // 52
51
z
z
z
z
400
401
402
403
(big-endian)
12
34
56
78
(little-endian)
78
56
34
12
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
z
z
Ejemplos:
MOV AX, BX
MOV CX, Etiqueta
29
29 // 52
51
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
30
30 // 52
51
Ejemplos:
MOV AL, [BX]
ADD CH, Numero[SI]
MOV BL, [SP+4]
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
Registro de referencia
Relativo a contador de
programa
DE = CP + desplazamiento
Un registro base (R B)
DE = RB + desplazamiento
Un registro ndice (R I)
DE = RI + desplazamiento
Relativo a pila
DE = SP + desplazamiento
Ventajas
Inconvenientes
31
31 // 52
51
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
32
32 // 52
51
z
z
Ejemplos:
z MOV AL, [ [100] ]
z MOV CL, [ [B + 1234h] ]
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
33
33 // 52
51
z
z
Ejemplos:
z MUL %;';$; $;[%;
donde AX y DX son operandos implcitos
z
RET
realiza las siguientes operaciones:
z ,3>63@
z 6363
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
34
34 // 52
51
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
Funcin
Registro de segmento
CS
SS
DS
ES
35
35 // 52
51
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
Banco de registros:
36
36 // 52
51
Registros de datos:
AX (AH, AL)
BX (BH, BL)
CX (CH, CL)
DX (DH, DL)
Punteros:
SP
BP
SI
DI
IP
- Puntero de pila
- Puntero base de pila
- Registro ndice
- Registro ndice
- Contador de programa
Registros de segmentos:
z
SS - Segmento de pila
DS
ES
- Segmento de datos
- Segmento extra de datos
CS
- Segmento de cdigo
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
37
37 // 52
51
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
38
38 // 52
51
Modo de direccionamiento
Ejemplo
Directo
DF = DS x 10h + Etiqueta
Relativo a base
DF = DS x 10h + BX + Elemento
Mediante ndice
DF = DS x 10h + SI + Elemento
DF = DS x 10h + BX + SI + Elemento
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
B. Registros
SI = 0010h
IP = 0025h
SP = 0200h
Memoria
Num = 1500h
Ejemplos
39
39 // 52
51
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
40
40 // 52
51
Cod. Operacin
Operandos
Resultado
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
Cod. operacin
Operandos
41
41 // 52
51
Arquitectura de Computadores I
Z80
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
Tipo de instruccin
42
42 // 52
51
Transferencia
L. Mquina
L. Ensamblador
Operacin
323353
LD (5333), A
M(5333) A
L. Mquina
L. Ensamblador
Operacin
A33353
MOV [5333], AX
0AX
No existe equivalente
i80x86/8088
Tipo de instruccin
Transferencia
F7E3
MUL BX
DX, AX AX x BX
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
43
43 // 52
51
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
44
44 // 52
51
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
REG
W=0
W=1
000
AL
AX
001
CL
CX
010
DL
DX
011
BL
BX
100
AH
SP
101
CH
BP
110
DH
SI
111
BH
DI
Funcin
00
01
10
11
Modo registro
45
45 // 52
51
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
46
46 // 52
51
z
z
z
z
R/M
W=0
W=1
R/M
MOD = 00
MOD = 01
MOD = 10
000
AL
AX
000
[BX] + [SI]
[BX] + [SI] + D8
001
CL
CX
001
[BX] + [DI]
[BX] + [DI] + D8
010
DL
DX
010
[BP] + [SI]
[BP] + [SI] + D8
011
BL
BX
011
[BP] + [DI]
[BP] + [DI] + D8
100
AH
SP
100
[SI]
[SI] + D8
[SI] + D16
101
CH
BP
101
[DI]
[DI] + D8
[DI] + D16
110
DH
SI
110
direccin directa
[BP] + D8
[BP] + D16
111
BH
DI
111
[BX]
[BX] + D8
[BX] + D16
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
47
47 // 52
51
El bit D indica si el registro que seala el campo REG del segundo byte
es el operando fuente o el destino. En este caso se codificar el registro
BL en el campo REG del segundo byte; por tanto, D ser igual a 1
El bit W debe indicar una operacin de tamao byte. Por esta razn su
valor ser 0
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
48
48 // 52
51
REG = 011
z Como el segundo operando es tambin un registro
MOD = 11
z El campo R/M debe especificar que el registro es AL
R/M = 000
z Por tanto, el segundo byte completo es:
8A D8h
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
49
49 // 52
51
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
50
50 // 52
51
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
51
51 // 52
51
Arquitectura de Computadores I
Tema
3: Lenguaje mquina y lenguaje
Tema 2: La Unidad Aritmtico-Lgica
ensamblador
Bibliografa
52
52 // 52
51
Arquitectura de Computadores I