Upload
hoangxuyen
View
220
Download
0
Embed Size (px)
Citation preview
Ensamblador
Introducción
Dpto. Física y Arquitectura de Computadores
Universidad Miguel Hernandez
Ensamblador
I t d ióIntroducciónEs el leng aje de más bajo ni el q e
Introducción
• Es el lenguaje de más bajo nivel que admite una máquina.
InstruccionesTransferencia
ALUControl • El ensamblador hace que el códigoEntrada/Salida
FlagsOtros
• El ensamblador hace que el código binario(máquina sea transparente al
i )usuario)
22007-2008
Ensamblador
Repertorio InstruccionesRepertorio Instrucciones
IntroducciónInstruccionesTransferencia
ALUControl
Entrada/SalidaFlagsOtros
32007-2008
Ensamblador
NomenclaturaNomenclatura•r1 y r2: Hacen referencia a uno de los
Introducción
•r1 y r2: Hacen referencia a uno de los registros A,B,C,D,E•Dir: Expresa una dirección de memoriaInstrucciones
TransferenciaALU
Control
•Dir: Expresa una dirección de memoria comprendida entre 000016 y FFFF16(64Kb)Entrada/Salida
FlagsOtros
(64Kb)•#n: es un número de interrupción o de puerto según la instrucciónde puerto según la instrucción•Dato: representa un valor de 8 bits, excepto para la instrucción MVI datoexcepto para la instrucción MVI dato que son 16 bits
42007-2008
Ensamblador
Longitud instrucciónLongitud instrucción
Introducción
•En MaNoTas podemos encontrar instrucciones de 1,2 ó 3 bytes.
InstruccionesTransferencia
ALUControl
•Para saber cuantos bytes ocupa una instrucción:
Entrada/SalidaFlagsOtros
• Instrucción sin operandos -> 1 byte• Instrucción tipo nominstruccion r1,r2 -> 1 byte• Instrucción tipo nominstruccion dato r1 > 2• Instrucción tipo nominstruccion dato,r1 -> 2
bytes (Mvi-> 3 bytes)• Instrucción tipo nominstruccion #n -> 2 bytesp y• Instrucción tipo nominstruccion dir -> 3 bytes
52007-2008
Ensamblador
IntroducciónInstruccionesTransferencia
ALUControl
INSTRUCCIONES DEEntrada/SalidaFlagsOtros
INSTRUCCIONES DE TRANSFERENCIA
62007-2008
Ensamblador
T f iTransferencia
Introducción •Movimiento, carga, almacenamiento InstruccionesTransferencia
ALUControl
de datos:• Tenemos 5 registros en MaNoTas de 8 bits sólo
Entrada/SalidaFlagsOtros
gel registro A (Acumulador) es inmediato a operaciones de ALU y transferencia de datos.
• No usaremos los registros para almacenar datos definitivos de un programa, sólo para almacenar datos temporalesalmacenar datos temporales.
72007-2008
Ensamblador
• MOV r1 r2 (Mover)• MOV r1, r2 (Mover)
Nos permite mover contenido delIntroducción
Nos permite mover contenido del registro r1 al registro r2 donde r1 y r2 pueden ser cualquiera de los 5Instrucciones
TransferenciaALU
Control
r2 pueden ser cualquiera de los 5 registros del MaNoTas.
Entrada/SalidaFlagsOtros
• MVI dato, r1 (Mover Inmediato)
Mueve un dato directamente a un registro. Aquí r1 también puede ser el registro q p gespecial de pila (SP (16 bits))
Ojo, con los tamaños de los datos y los i t
82007-2008registros.
Ensamblador
• LDA dir (Cargar en A)• LDA dir (Cargar en A)
Mueve el dato contenido en laIntroducción
Mueve el dato contenido en la dirección de memoria dir, al registro AInstrucciones
TransferenciaALU
Control
A
• STA dir (Almacenar desde A)Entrada/SalidaFlagsOtros
• STA dir (Almacenar desde A)
Salva en la dirección de memoriaSalva en la dirección de memoria especificada por dir, el dato contenido en A.
92007-2008
Ensamblador
• LDAX (Cargar en A desde posición• LDAX (Cargar en A desde posición exclusiva D-E)
IntroducciónMueve el contenido de memoria de la dirección especificada por laInstrucciones
TransferenciaALU
Control
dirección especificada por la combinación de los registros D-E a A.La combinación consiste en: El byte deEntrada/Salida
FlagsOtros
La combinación consiste en: El byte de mayor peso de la dirección será el de D, y el byte de menor peso el de Ey p
• STAX (Almacenar exclusiva)( )• Almacena el contenido de A , en la dirección
especificada por D-E
102007-2008
Ensamblador
Empleo de la PILAEmpleo de la PILA• Los conjuntos de datos se almacenan
siempre en Memoria
Introducción
siempre en Memoria• Estos datos se organizan de
diferentes formas dependiendo de suInstruccionesTransferencia
ALUControl
diferentes formas dependiendo de su disposición y modo de acceso.
• FIFO: First in First outEntrada/SalidaFlagsOtros
• FIFO: First in First out• LIFO: Last in First out (Pilas)
• Añadir un elemento (apilar o Push)• Añadir un elemento (apilar o Push)• Quitar un elemento (desapilar o Pop)
• Registro SP es un puntero a una Pila• Registro SP es un puntero a una Pila• Cuando apilamos, se incrementa el contador
de SP
112007-2008• Cuando desapilamos se decrementa
Ensamblador
• PUSH r1 (Apilar)• PUSH r1 (Apilar)
Salva en la dirección especificada porIntroducción
Salva en la dirección especificada por el registro SP el contenido de r1; posteriormente se incrementa SPInstrucciones
TransferenciaALU
Control
posteriormente se incrementa SP
• POP r1 (Extraer)Entrada/SalidaFlagsOtros
• POP r1 (Extraer)
Primero decrementa SP y copia elPrimero decrementa SP, y copia el contenido de la memoria en r1
122007-2008
Ensamblador
• PUSHF (Apilar registro Flags)• PUSHF (Apilar registro Flags)
Similar a PUSH pero apilamos elIntroducción
Similar a PUSH, pero apilamos el registro de FLAGS
InstruccionesTransferencia
ALUControl
• POPF (Desapilar FLAGS)Entrada/Salida
FlagsOtros Similar a POP, pero el dato lo metemos en
el registro de FLAGSel registro de FLAGS
132007-2008
Ensamblador
Instrucciones del registro de EstadoInstrucciones del registro de Estado
• El RE es un registro especial de 8Introducción
• El RE es un registro especial de 8 bits, en el que se encuentran los estados de flag Z (cero) C (acarreo)Instrucciones
TransferenciaALU
Control
estados de flag Z (cero), C (acarreo), O (desbordamiento) e I (interrupción)
Entrada/SalidaFlagsOtros
(interrupción)• Su contenido es modificado
automáticamente por la ALU alautomáticamente por la ALU al realizar operaciones
• Para trabajar con este registro• Para trabajar con este registro necesitamos instrucciones especiales.
142007-2008
Ensamblador
• LFA (Cargar el registro en A)• LFA (Cargar el registro en A)
Copia el contenido de RE en elIntroducción
Copia el contenido de RE en el registro A (Acumulador)
InstruccionesTransferencia
ALUControl
• SFA (Almacenar desde A)Entrada/Salida
FlagsOtros Copia el contenido de A en el registro de
Flags (RE)Flags (RE)
152007-2008
Ensamblador
IntroducciónInstruccionesTransferencia
ALUControl
INSTRUCCIONES ALUEntrada/SalidaFlagsOtros
INSTRUCCIONES ALU
162007-2008
Ensamblador
Instrucciones de la ALUInstrucciones de la ALU
• Las instrucciones aritméticas estánIntroducción
• Las instrucciones aritméticas están enfocadas al cálculo aritmetico entre númerosInstrucciones
TransferenciaALU
Control
números.• Cada vez que la ALU realiza una
operación devuelve el resutado alEntrada/SalidaFlagsOtros
operación, devuelve el resutado al Acumulador y modifica el Registro de EstadoEstado
• La ALU soporta operaciones como Suma Resta incrementoSuma, Resta, incremento, decremento
172007-2008
Ensamblador
• ADD r1 (suma)• ADD r1 (suma)
Suma el contenido del registro A y elIntroducción
Suma el contenido del registro A y el contenido del registro r1, llevando el resultado al registro AInstrucciones
TransferenciaALU
Control
resultado al registro A
• ADI dato (Suma con inmediato)Entrada/SalidaFlagsOtros
• ADI dato (Suma con inmediato)
Suma el contenido del registro A y el valorSuma el contenido del registro A y el valor especificado en dato.El dato debe estar comprendido entre 0 yEl dato debe estar comprendido entre 0 y 255, ya que se trata de 8 bits
182007-2008
Ensamblador
• SUB r1 (Resta)• SUB r1 (Resta)
Resta al contenido del registro A y elIntroducción
Resta al contenido del registro A y el contenido del registro r1, llevando el resultado al registro AInstrucciones
TransferenciaALU
Control
resultado al registro A
• SUI dato (Resta con inmediato)Entrada/SalidaFlagsOtros
• SUI dato (Resta con inmediato)
Resta al contenido del registro A y el valorResta al contenido del registro A y el valor especificado en dato.El dato debe estar comprendido entre 0 yEl dato debe estar comprendido entre 0 y 255, ya que se trata de 8 bits
192007-2008
Ensamblador
• INR r1 (Incrementar)• INR r1 (Incrementar)
Incrementa el contenido el registro r1Introducción
Incrementa el contenido el registro r1 en una unidad.
InstruccionesTransferencia
ALUControl
• DEC r1 (Decrementar)Entrada/Salida
FlagsOtros Decrementa el contenido de r1 en una
unidadunidad.
202007-2008
Ensamblador
• CMP r1 (Comparar)• CMP r1 (Comparar)
Realiza la resta entre A y r1 sinIntroducción
Realiza la resta entre A y r1, sin almacenar el resultado, de manera que si la diferencia es 0 significa queInstrucciones
TransferenciaALU
Control
que si la diferencia es 0 significa que ambos registros son iguales, actualizando el Flag Z= 1
Entrada/SalidaFlagsOtros
actualizando el Flag Z 1Si no son iguales, si la diferencia produjo acarreo significará que elprodujo acarreo significará que el dato de A era menor que el de r1, poniendo el Flag C=1p g
212007-2008
Ensamblador
• CPI dato (Comparar inmediato)CPI dato (Comparar inmediato)
Igual que COMP, pero ahora comparamos
Introducción
Igual que COMP, pero ahora comparamos con el dato directamente.
óInstruccionesTransferencia
ALUControl
• ANA r1 (And) : Operaciones lógicas
Realiza el producto lógico entre A y r1 llevando elEntrada/SalidaFlagsOtros
Realiza el producto lógico entre A y r1, llevando el resultado a A
• ANI dato (And inmediato) : Operaciones logicas
Realiza el producto lógico entre A y el datoRealiza el producto lógico entre A y el dato especificado, llevando el resultado a A
222007-2008
Ensamblador
• ORA r1 (Operación Or)ORA r1 (Operación Or)
Realiza la suma exclusiva entre el
Introducción
Realiza la suma exclusiva entre el contenido de A y el dato especificado, llevando el resultado al registro A.
InstruccionesTransferencia
ALUControl
• ORI dato (Or inmediato) : Operaciones lógicasEntrada/Salida
FlagsOtros
Igual que ORA, pero la suma lógica se hace entre A y el dato especificado.
• XRA r1 (Xor) : Operaciones lógicas
Realiza la suma exclusiva entre A y el contenido de r1, modificando A con el resultado.
232007-2008
Ensamblador
• XRI dato (Xor inmediato)• XRI dato (Xor inmediato)
Igual que XRA pero ahoraIntroducción
Igual que XRA, pero ahora comparamos con el dato directamenteInstrucciones
TransferenciaALU
Control
directamente.
• CMA (Complementario) : OperacionesEntrada/SalidaFlagsOtros
• CMA (Complementario) : Operaciones lógicas
Realiza el Complementario del contenido del registro A, guardando el resultado en A g g(NOT A)
242007-2008
Ensamblador
ESTUDIAR:ESTUDIAR:• Ensamblador :
Introducción
• Ensamblador :• Repasar tema 2 libro
InstruccionesTransferencia
ALUControl
• Desde 2.1 hasta 2.4 incluidoEntrada/Salida
FlagsOtros
• Memorias• Memorias• Repasar Tema 5 librop• Desde 5.1 hasta 5.5 incluido
252007-2008
Ensamblador
Problema:• Problema:• Realizar un programa que
Introducción
Realizar un programa que compruebe si los números contenidos en las posiciones deInstrucciones
TransferenciaALU
Control
contenidos en las posiciones de memoria de la 50016 a la 50416
100Entrada/SalidaFlagsOtros
suman 100
262007-2008
Ensamblador
• Solución:• Solución:;Cargar datos
Introducción
• LDA 500h• MOV A,B
ADD BADD C
InstruccionesTransferencia
ALUControl
MOV A,B• LDA 501h• MOV A C
ADD DADD E
Entrada/SalidaFlagsOtros
• MOV A,C• LDA 502h• MOV A D
CPI 100JZ [1000h]; si es 100 salta a• MOV A,D
• LDA 503hMOV A E
JZ [1000h]; si es 100 salta a otro lugarJMP [FFFFh]; salta fin
• MOV A,E• LDA 504h
272007-2008