You are on page 1of 27

Ensamblador

Introduccin

Dpto. Fsica y Arquitectura de Computadores Universidad Miguel Hernandez

Ensamblador

I t d i Introduccin
Introduccin Instrucciones Transferencia ALU Control Entrada/Salida Flags Otros

Es el leng lenguaje aje de ms bajo nivel ni el que q e admite una mquina. El ensamblador hace que el cdigo binario(mquina sea transparente al usuario) i )

2007-2008

Ensamblador

Repertorio Instrucciones

Introduccin Instrucciones Transferencia ALU Control Entrada/Salida Flags Otros

2007-2008

Ensamblador

Nomenclatura
Introduccin Instrucciones Transferencia ALU Control Entrada/Salida Flags Otros

r1 y r2: Hacen referencia a uno de los registros A,B,C,D,E Dir: Expresa una direccin de memoria comprendida entre 000016 y FFFF16 (64Kb) #n: es un nmero de interrupcin o de puerto segn la instruccin Dato: representa un valor de 8 bits, excepto para la instruccin MVI dato que son 16 bits
2007-2008 4

Ensamblador

Longitud instruccin
Introduccin Instrucciones Transferencia ALU Control Entrada/Salida Flags Otros

En MaNoTas podemos encontrar instrucciones de 1,2 3 bytes. Para saber cuantos bytes ocupa una instruccin:

Instruccin sin operandos -> 1 byte Instruccin tipo nominstruccion r1,r2 -> 1 byte Instruccin tipo nominstruccion dato,r1 dato r1 -> >2 bytes (Mvi-> 3 bytes) Instruccin tipo p nominstruccion #n -> 2 bytes y Instruccin tipo nominstruccion dir -> 3 bytes

2007-2008

Ensamblador

Introduccin Instrucciones Transferencia ALU Control Entrada/Salida Flags Otros

INSTRUCCIONES DE TRANSFERENCIA

2007-2008

Ensamblador

T Transferencia f i
Introduccin Instrucciones Transferencia ALU Control Entrada/Salida Flags Otros

Movimiento, carga, almacenamiento de datos:


Tenemos 5 registros g en MaNoTas de 8 bits slo el registro A (Acumulador) es inmediato a operaciones de ALU y transferencia de datos. No usaremos los registros para almacenar datos definitivos de un programa, slo para almacenar datos temporales temporales.

2007-2008

Ensamblador

MOV r1, r1 r2 (Mover) Nos permite mover contenido del registro r1 al registro r2 donde r1 y r2 pueden ser cualquiera de los 5 registros del MaNoTas.
MVI dato, r1 (Mover Inmediato) Mueve un dato directamente a un registro. Aqu q r1 tambin puede p ser el registro g especial de pila (SP (16 bits)) Ojo, con los tamaos de los datos y los registros. i t
2007-2008 8

Introduccin Instrucciones Transferencia ALU Control Entrada/Salida Flags Otros

Ensamblador

LDA dir (Cargar en A) Mueve el dato contenido en la direccin de memoria dir, al registro A
STA dir (Almacenar desde A) Salva en la direccin de memoria especificada por dir, el dato contenido en A.

Introduccin Instrucciones Transferencia ALU Control Entrada/Salida Flags Otros

2007-2008

Ensamblador

LDAX (Cargar en A desde posicin exclusiva D-E)


Introduccin Instrucciones Transferencia ALU Control Entrada/Salida Flags Otros

Mueve el contenido de memoria de la direccin especificada por la combinacin de los registros D-E a A.
La combinacin consiste en: El byte de mayor peso de la direccin ser el de D, y y de menor p peso el de E el byte STAX ( (Almacenar exclusiva) )
Almacena el contenido de A , en la direccin especificada por D-E
2007-2008 10

Ensamblador

Introduccin Instrucciones Transferencia ALU Control Entrada/Salida Flags Otros

Empleo de la PILA Los conjuntos de datos se almacenan siempre en Memoria Estos datos se organizan de diferentes formas dependiendo de su disposicin y modo de acceso. FIFO: First in First out LIFO: Last in First out (Pilas) Registro SP es un puntero a una Pila
Cuando apilamos, se incrementa el contador de SP Cuando desapilamos se decrementa 2007-2008 11 Aadir un elemento (apilar o Push) Quitar un elemento (desapilar o Pop)

Ensamblador

PUSH r1 (Apilar) Salva en la direccin especificada por el registro SP el contenido de r1; posteriormente se incrementa SP
POP r1 (Extraer) Primero decrementa SP SP, y copia el contenido de la memoria en r1

Introduccin Instrucciones Transferencia ALU Control Entrada/Salida Flags Otros

2007-2008

12

Ensamblador

PUSHF (Apilar registro Flags) Similar a PUSH, PUSH pero apilamos el registro de FLAGS
POPF (Desapilar FLAGS) Similar a POP, pero el dato lo metemos en el registro de FLAGS

Introduccin Instrucciones Transferencia ALU Control Entrada/Salida Flags Otros

2007-2008

13

Ensamblador

Instrucciones del registro de Estado


Introduccin Instrucciones Transferencia ALU Control Entrada/Salida Flags Otros

El RE es un registro especial de 8 bits, en el que se encuentran los estados de flag Z (cero) (cero), C (acarreo) (acarreo), O (desbordamiento) e I (interrupcin) Su contenido es modificado automticamente por la ALU al realizar operaciones Para trabajar con este registro necesitamos instrucciones especiales.
2007-2008 14

Ensamblador

LFA (Cargar el registro en A) Copia el contenido de RE en el registro A (Acumulador)


SFA (Almacenar desde A) Copia el contenido de A en el registro de Flags (RE)

Introduccin Instrucciones Transferencia ALU Control Entrada/Salida Flags Otros

2007-2008

15

Ensamblador

Introduccin Instrucciones Transferencia ALU Control Entrada/Salida Flags Otros

INSTRUCCIONES ALU

2007-2008

16

Ensamblador

Instrucciones de la ALU Las instrucciones aritmticas estn enfocadas al clculo aritmetico entre nmeros nmeros. Cada vez que la ALU realiza una operacin devuelve el resutado al operacin, Acumulador y modifica el Registro de Estado La ALU soporta operaciones como Suma Resta, Suma, Resta incremento incremento, decremento
2007-2008 17

Introduccin Instrucciones Transferencia ALU Control Entrada/Salida Flags Otros

Ensamblador

ADD r1 (suma) Suma el contenido del registro A y el contenido del registro r1, llevando el resultado al registro A
ADI dato (Suma con inmediato) Suma el contenido del registro A y el valor especificado en dato. El dato debe estar comprendido entre 0 y 255, ya que se trata de 8 bits
2007-2008 18

Introduccin Instrucciones Transferencia ALU Control Entrada/Salida Flags Otros

Ensamblador

SUB r1 (Resta) Resta al contenido del registro A y el contenido del registro r1, llevando el resultado al registro A
SUI dato (Resta con inmediato) Resta al contenido del registro A y el valor especificado en dato. El dato debe estar comprendido entre 0 y 255, ya que se trata de 8 bits
2007-2008 19

Introduccin Instrucciones Transferencia ALU Control Entrada/Salida Flags Otros

Ensamblador

INR r1 (Incrementar) Incrementa el contenido el registro r1 en una unidad.


DEC r1 (Decrementar) Decrementa el contenido de r1 en una unidad. unidad

Introduccin Instrucciones Transferencia ALU Control Entrada/Salida Flags Otros

2007-2008

20

Ensamblador

CMP r1 (Comparar) Realiza la resta entre A y r1 r1, sin almacenar el resultado, de manera que si la diferencia es 0 significa que ambos registros son iguales, actualizando el Flag Z Z= 1 Si no son iguales, si la diferencia produjo acarreo significar que el dato de A era menor que el de r1, poniendo el Flag p g C=1

Introduccin Instrucciones Transferencia ALU Control Entrada/Salida Flags Otros

2007-2008

21

Ensamblador

CPI dato (Comparar inmediato) Igual que COMP, pero ahora comparamos con el dato directamente.
Introduccin Instrucciones Transferencia ALU Control Entrada/Salida Flags Otros

ANA r1 (And) : Operaciones lgicas Realiza el producto lgico entre A y r1 r1, llevando el resultado a A ANI dato (And inmediato) : Operaciones logicas Realiza el producto lgico entre A y el dato especificado, llevando el resultado a A
2007-2008 22

Ensamblador

ORA r1 (Operacin Or) Realiza la suma exclusiva entre el contenido de A y el dato especificado, llevando el resultado al registro A.
ORI dato (Or inmediato) : Operaciones lgicas Igual que ORA, pero la suma lgica se hace entre A y el dato especificado. XRA r1 (Xor) : Operaciones lgicas Realiza la suma exclusiva entre A y el contenido de r1, modificando A con el resultado.
2007-2008 23

Introduccin Instrucciones Transferencia ALU Control Entrada/Salida Flags Otros

Ensamblador

XRI dato (Xor inmediato) Igual que XRA, XRA pero ahora comparamos con el dato directamente directamente.
CMA (Complementario) : Operaciones lgicas Realiza el Complementario del contenido del registro g A, guardando g el resultado en A (NOT A)
2007-2008 24

Introduccin Instrucciones Transferencia ALU Control Entrada/Salida Flags Otros

Ensamblador

ESTUDIAR: Ensamblador :
Introduccin Instrucciones Transferencia ALU Control Entrada/Salida Flags Otros

Repasar tema 2 libro Desde 2.1 hasta 2.4 incluido

Memorias
Repasar p Tema 5 libro Desde 5.1 hasta 5.5 incluido
2007-2008 25

Ensamblador

Problema:
Introduccin Instrucciones Transferencia ALU Control Entrada/Salida Flags Otros

Realizar un programa que compruebe si los nmeros contenidos en las posiciones de memoria de la 50016 a la 50416 suman 100

2007-2008

26

Ensamblador

Solucin: ;Cargar datos


Introduccin Instrucciones Transferencia ALU Control Entrada/Salida Flags Otros

LDA 500h MOV A,B LDA 501h MOV A,C AC LDA 502h MOV A,D AD LDA 503h MOV A,E AE LDA 504h

ADD B ADD C ADD D ADD E CPI 100 JZ [1000h]; si es 100 salta a otro lugar JMP [FFFFh]; salta fin

2007-2008

27

You might also like