Sunteți pe pagina 1din 41

MICROPROCESADORES Y

CONTROL DE PERIFRICOS
INSTRUCCIONES Y LENGUAJES

Prof. Juan lvarez


CONTENIDO
Repertorio de Instrucciones
Modos de Direccionamiento
Lenguaje de Mquina
Programas con Debug
REPERTORIO DE INSTRUCCIONES
El repertorio de instrucciones de los
microprocesadores 8086 y 80286 se agrupan
segn el tipo de operacin que realizan:
De transferencia de datos.
Aritmticas, lgicas, desplazamiento y
rotacin.
De cadenas.
De manipulacin de bits.
De control de programas.
De control de mquina.
REPERTORIO DE INSTRUCCIONES
Las instrucciones de transferencia de datos
consisten en copiar, mover o intercambiar
datos entre, registros o registro-memoria o
registro-puerto E/S:
MOV (copiar), XCHG (intercambiar),
PUSH (almacenar en pila), POP (cargar de
pila), LEA (cargar direccin efectiva), OUT
(sacar dato por puerto), IN (ingresar dato
por puerto), XLAT (ingresar una tabla de
conversin).
REPERTORIO DE INSTRUCCIONES
Las instrucciones aritmticas son operaciones
de la ALU:
ADD (sumar), ADC (sumar con acarreo),
SUB (restar), SBB (restar con prstamo),
CMP (comparar), DEC (decrementa), INC
(incrementa), MUL (multiplicacin sin
signo), IMUL (multiplicacin con signo),
DIV (divisin sin signo), IDIV (divisin con
signo)
REPERTORIO DE INSTRUCCIONES
Las instrucciones lgicas son tambin
operaciones de la ALU:
NEG (complemento a dos), NOT
(complemento a uno), AND (and bit a bit),
OR (or bit a bit), XOR (xor bit a bit).
Los desplazamientos SAL,SHL (hacia la
izquierda), SAR, SHR (hacia la derecha)
Las rotaciones RCL, ROL (hacia la
izquierda), RCR, ROR (hacia la derecha)
REPERTORIO DE INSTRUCCIONES
Las instrucciones de cadenas se emplean para
manipular una lista de datos en la memoria:
MOVS (copiar cadena), CMPS (comparar
cadenas), INS (almacenar cadenas desde
puerto), OUTS (sacar cadena hacia puerto).
Las instrucciones de manipulacin de bits se
emplean para manejar datos de bits:
STC (carry = 1), CLC (carry = 0), CMC
(complementar carry), STD (direcction = 1),
CLD (direction = 0), STI (interrupt = 1),
CLI (interrupt = 0).
REPERTORIO DE INSTRUCCIONES
Las instrucciones de control de programa
sirven para posicionarse dentro de una
programa o para llamar a subrutina):
CALL (llamar subrutina), RET (retornar a
programa principal), JMP (salto
incondicional), LOOP (bucle).
Los saltos condicionales forman una larga
lista. Ej: JE, JNE, JG, JNG, JCXZ, JZ,
JNZ, JNC, JC, JPO, JPE, JP, JS.
REPERTORIO DE INSTRUCCIONES
Las instrucciones de control de mquina
afectan la operacin del procesador:
INT (interrupciones y las hay de variadas
formas), HLT (alto), LOCK (bloquear el
bus), NOP (no operacin), ESC (transmitir
informacin al coprocesador), WAIT
(esperar que acabe el coprocesador.
MODOS DE DIRECCIONAMIENTO
En los microprocesadores Intel se encuentran varios
modos de direccionamiento bsicos:
De registro
Inmediato
Directo
Indirecto
Base + ndice
Relativo de registro
Relativo base + ndice
MODOS DE DIRECCIONAMIENTO
Para ilustrar los modos de direccionamiento se tomar como
ejemplo la instruccin MOV que es muy sencilla como
operacin y tiene varios modos. La sintaxis de esta
instruccin es:
MOV destino, fuente
y lo que est en la fuente se copia en el destino.
En el destino puede haber registro o memoria, en la fuente
puede haber registro, memoria o dato inmediato. Las
principales opciones son:
MOV reg, reg
MOV reg, mem
MOV mem, reg
MOV reg, inm
MODOS DE DIRECCIONAMIENTO
El direccionamiento por registro opera solamente con
registros: destino y fuente son registros.
Ejemplo: MOV AX, BX
lo que est en BX se copia en AX.
MODOS DE DIRECCIONAMIENTO
En el direccionamiento inmediato, el dato que va a ser
manipulado se conoce al momento de leer la instruccin y
antes de ser ejecutada.
Ejemplo: MOV AX, 1234h
el dato 1234h se copia en AX.
MODOS DE DIRECCIONAMIENTO
En el direccionamiento directo, el dato se encuentra en
memoria y debe ser ubicado con la direccin que se provee
al momento de leer la instruccin.
Ejemplo: MOV AX, [0100h]
lo que est entre corchetes es el desplazamiento dentro del
segmento de datos y sirve para localizar el dato a ser
copiado en AX.
MODOS DE DIRECCIONAMIENTO
En el direccionamiento indirecto, el dato est en la
memoria y se posiciona con el desplazamiento que se
encuentra en el registro puntero o base.
Ejemplo: MOV AX, [BX]
BX contiene el desplazamiento en el segmento de datos
para ubicar el dato que ser copiado en AX.
MODOS DE DIRECCIONAMIENTO
En el direccionamiento base + ndice, el dato de la
memoria se posiciona con la suma del contenido de un
registro base y un registro ndice.
Ejemplo: MOV AX, [BX + SI]
al sumar BX con SI se obtiene el desplazamiento del
segmento donde se ubica el dato a ser copiado en AX.
MODOS DE DIRECCIONAMIENTO
En el direccionamiento relativo por registro, la posicin del
dato en la memoria es la suma del contenido de un registro
puntero con un nmero de uno o dos bytes (offset).
Ejemplo: MOV AX, [BX + 0020h]
la suma de BX con 0020h permite posicionar el dato en la
memoria que se copia en AX.
MODOS DE DIRECCIONAMIENTO
En el direccionamiento relativo base + ndice, el dato de
memoria se ubica con la suma del contenido de un registro
base y un registro ndice ms un nmero offset.
Ejemplo: MOV AX, [BX + SI + 0020h]
la suma de BX con SI con 0020h es la posicin en memoria
del dato que va a ser copiado en AX.
MODOS DE DIRECCIONAMIENTO
Otras reglas adicionales deben ser consideradas en los modos
de direccionamiento:
Si el orden del destino y de la fuente se intercambian se
mantiene el mismo modo de direccionamiento. [Notar que
no se puede intercambiar operandos en el modo de
direccionamiento inmediato donde el dato a manipular
siempre est en la fuente].
MODOS DE DIRECCIONAMIENTO
Destino y fuente no pueden ser ambos memoria del mismo
segmento. Uno de ellos tiene que ser registro. El registro
determina el tamao del operando. En procesadores Intel
posteriores aparecern nuevos modos de direccionamiento
con opciones de transferencia memoria - memoria o
memoria - inmediato.
Destino y fuente deben tener el mismo tamao. Si en el
destino o en la fuente se encuentra un registro, entonces el
tamao del operando debe corresponder al tamao del
registro.
MODOS DE DIRECCIONAMIENTO
Un dato mayor de un byte se escribe en la memoria en
varias posiciones consecutivas: el byte ms significativo va
en la direccin ms grande y el byte menos significativo, en
la menor.
Por ejemplo: En la instruccin MOV AX, 5734h seguido de
MOV [0100h], AX , el dato a escribir en la memoria es:

0100 34 Byte menos significativo


0101 57 Byte ms significativo

Al leer de la memoria, el dato mayor de un byte tiene


tambin la misma disposicin.
LENGUAJE DE MQUINA
El lenguaje de mquina es el cdigo binario
que el microprocesador utiliza para
identificar instrucciones y controlar su
funcionamiento. En los procesadores Intel,
la longitud de las instrucciones del lenguaje
de mquina puede variar desde 1 hasta 13
bytes.
Para los procesadores de 16 bits la estructura
de las instrucciones en lenguaje de mquina
vara segn el modo de direccionamiento.
LENGUAJE DE MQUINA
Para los Modos de Direccionamiento de
Registro o los que posicionan memoria, el
formato es:
LENGUAJE DE MQUINA
Para el Modo de Direccionamiento Inmediato
el formato es:

A veces el cdigo de operacin se escribe con


ms de un byte.
LENGUAJE DE MQUINA FORMA BSICA

El cdigo de operacin elige la operacin que realiza


el microprocesador. Generalmente es de un byte y
contiene la siguiente informacin:

Cdigo operacin D W

Cuando D=1, el dato fluye del campo de R/M al


campo de REG; cuando D=0, el dato fluye del campo
de REG al campo de R/M. Cuando W=1, el dato es
de 16 bits; cuando W=0, el dato es de 8 bits.
LENGUAJE DE MQUINA FORMA BSICA
LENGUAJE DE MQUINA FORMA BSICA

En el byte de Campos MOD-REG-R/M, el campo


MOD especifica el modo de direccionamiento de
acuerdo a la tabla adjunta.
El campo REG especifica el tipo de registro que es
utilizado de acuerdo a lo que indica la tabla de
registros.
El campo R/M especifica el tipo de puntero utilizado
en la memoria o en todo caso especifica el otro
registro si MOD=00
LENGUAJE DE MQUINA FORMA BSICA

TABLA PARA EL CAMPO MOD


MOD funcin

00 Usa memoria sin desplazamiento (offset)

01 Usa memoria con un desplazamiento de 8 bits


con signo (offset)
10 Usa memoria con un desplazamiento de 16 bits
con signo (offset)
11 El campo R/M es un registro. Slo para el
modo de direccionamiento de registro.
LENGUAJE DE MQUINA FORMA BSICA
LENGUAJE DE MQUINA FORMA BSICA
TABLA PARA EL CAMPO REG
Cdigo 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
LENGUAJE DE MQUINA FORMA BSICA
Cdigo Direccionamiento
000 DS:[BX+SI]
001 DS:[BX+DI]
TABLA PARA
EL CAMPO 010 SS:[BP+SI]
DE R/M 011 SS:[BP+DI]
100 DS:[SI]
101 DS:[DI]
110 SS:[BP]
111 DS:[BX]
LENGUAJE DE MQUINA FORMA BSICA

Ejemplo: MOV DL,[DI]


Se escribe como: 10001010 = 8Ah, seguido
del byte: 00010101= 15h.
Ejemplo: cdigo: 10001011 = 8Bh,
seguido del byte: 11101100 = ECh.
Corresponde a la instruccin MOV BP,SP
Ejemplo: MOV DL,[DI+1000h]
Se escribe en lenguaje de mquina cmo
8Ah, 85h, 00h, 01h.
LENGUAJE DE MQUINA FORMA BSICA

Un modo de direccionamiento especial es el modo de


direccionamiento directo para el cual se utiliza
para MOD = 00 y para R/M = 110. Esta excepcin
se explica por el hecho que el uso del registro
puntero base BP slo puede usarse con
desplazamiento. Como MOD=00 le impide este
desplazamiento, entonces se trata del modo de
direccionamiento directo.
LENGUAJE DE MQUINA CASO INMEDIATO

El modo de direccionamiento inmediato posee su


propio formato y su propio cdigo de operacin.

Por ejemplo, MOV SI, 2233h se escribe como:


BE = 10111110 , 33 = 00110011, 22 = 00100010
PROGRAMAS CON DEBUG
Ejecutar el programa Ejecutar el programa
paso a paso y comprobar paso a paso y comprobar
cada transferencia: cada transferencia:
mov ax, 1234 mov bx, 2040
mov bx, 0200 push bx
mov si, 0020 mov ax, 1234
mov cx, ax pop ax
mov dx, [bx] int 20
mov [bx+si], cx La ltima instruccin
mov di, [bx+22] devuelve el control al
int 20 sistema operativo
PROGRAMAS CON DEBUG
C:\>debug
-n one.com
-l
-u 100 109
0D80:0100 B80600 MOV AX,0006
0D80:0103 BB0400 MOV BX,0004
0D80:0106 01D8 ADD AX,BX
0D80:0108 CD20 INT 20
-n one.com ; se usa para nombrar el programa
-l ; cargar el programa
-u 100 109 ; lista el programa en lenguaje de mquina
PROBLEMAS PROPUESTOS: 1
1. Determinar el modo de direccionamiento de cada una de
las siguientes instrucciones:
MOV DX, 1234H
MOV [BX + SI + 100h], BX
MOV CL, [BX + DI + 01h]
MOV [579AH], CX
MOV DX, [BX]
MOV AX, [BX + 2]
MOV CX, [0104H]
ADD AX, DX
MOV [BX + 6], AX
PROBLEMAS PROPUESTOS: 2
2. Considerar el siguiente conjunto de instrucciones en lenguaje
ensamblador:
MOV [SI + 200H], BX
MOV [BX + DI + 120H], AX
MOV [BX], CL
ADD CH, CL
PUSH AX
POP DX
Considerar los registros:
CS = 1000H IP = 0100H AX = 2030H DS = 2000H
DI = 0200H BX = 4050H ES = 3000H SI = 0300H
DX = 6070H SS = 4000H SP = 0400H CX = 8090H
F = 56F0H BP = 0500H
PROBLEMAS PROPUESTOS: 2
Se pide:
a. Traducir a lenguaje de mquina cada instruccin y escribir
las instrucciones en la memoria principal.
b. Indicar el contenido de los registros, incluyendo el registro
de estado, al trmino de la ejecucin de este conjunto de
instrucciones y agregar el modo de direccionamiento de
cada una de las instrucciones.
PROBLEMAS PROPUESTOS: 3
3. Considerar el siguiente programa en lenguaje ensamblador
que incluye algunas etiquetas como mycode, mydata, stack,
las que representan nmeros de 2 bytes.
ASSUME CS: mycode, DS: mydata, SS: stack
PUSH DS
PUSHA
SUB AX, AX
MOV AX, mydata
MOV DS, AX
MOV BX, 0100H
MOV AX, [BX]
ADD AX, [BX + 2]
ADD AX, [BX + 4]
PROBLEMAS PROPUESTOS: 3
MOV [BX + 6], AX
POPA
HLT
Se pide:
a. Describir qu es lo que hace esta fraccin de programa
b. Deducir el modo de direccionamiento de cada instruccin.
c. Traducir a lenguaje de mquina este programa con la
informacin que se adjunta.

S-ar putea să vă placă și