Professional Documents
Culture Documents
Introduccin
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
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
INSTRUCCIONES DE TRANSFERENCIA
2007-2008
Ensamblador
T Transferencia f i
Introduccin Instrucciones Transferencia ALU Control Entrada/Salida Flags Otros
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
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.
2007-2008
Ensamblador
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
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
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
2007-2008
13
Ensamblador
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
2007-2008
15
Ensamblador
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
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
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
Ensamblador
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
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
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
Ensamblador
ESTUDIAR: Ensamblador :
Introduccin Instrucciones Transferencia ALU Control Entrada/Salida Flags Otros
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
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