27
Ensamblador Introducción Dpto. Física y Arquitectura de Computadores Universidad Miguel Hernandez

sesion04-ensamblador.ppt [Modo de compatibilidad] · Ensamblador It d ióIntroducción Es el leng aje de más bajo ni el q e Introducción • Es el lenguaje de más bajo nivel que

Embed Size (px)

Citation preview

Page 1: sesion04-ensamblador.ppt [Modo de compatibilidad] · Ensamblador It d ióIntroducción Es el leng aje de más bajo ni el q e Introducción • Es el lenguaje de más bajo nivel que

Ensamblador

Introducción

Dpto. Física y Arquitectura de Computadores

Universidad Miguel Hernandez

Page 2: sesion04-ensamblador.ppt [Modo de compatibilidad] · Ensamblador It d ióIntroducción Es el leng aje de más bajo ni el q e Introducción • Es el lenguaje de más bajo nivel que

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

Page 3: sesion04-ensamblador.ppt [Modo de compatibilidad] · Ensamblador It d ióIntroducción Es el leng aje de más bajo ni el q e Introducción • Es el lenguaje de más bajo nivel que

Ensamblador

Repertorio InstruccionesRepertorio Instrucciones

IntroducciónInstruccionesTransferencia

ALUControl

Entrada/SalidaFlagsOtros

32007-2008

Page 4: sesion04-ensamblador.ppt [Modo de compatibilidad] · Ensamblador It d ióIntroducción Es el leng aje de más bajo ni el q e Introducción • Es el lenguaje de más bajo nivel que

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

Page 5: sesion04-ensamblador.ppt [Modo de compatibilidad] · Ensamblador It d ióIntroducción Es el leng aje de más bajo ni el q e Introducción • Es el lenguaje de más bajo nivel que

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

Page 6: sesion04-ensamblador.ppt [Modo de compatibilidad] · Ensamblador It d ióIntroducción Es el leng aje de más bajo ni el q e Introducción • Es el lenguaje de más bajo nivel que

Ensamblador

IntroducciónInstruccionesTransferencia

ALUControl

INSTRUCCIONES DEEntrada/SalidaFlagsOtros

INSTRUCCIONES DE TRANSFERENCIA

62007-2008

Page 7: sesion04-ensamblador.ppt [Modo de compatibilidad] · Ensamblador It d ióIntroducción Es el leng aje de más bajo ni el q e Introducción • Es el lenguaje de más bajo nivel que

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

Page 8: sesion04-ensamblador.ppt [Modo de compatibilidad] · Ensamblador It d ióIntroducción Es el leng aje de más bajo ni el q e Introducción • Es el lenguaje de más bajo nivel que

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.

Page 9: sesion04-ensamblador.ppt [Modo de compatibilidad] · Ensamblador It d ióIntroducción Es el leng aje de más bajo ni el q e Introducción • Es el lenguaje de más bajo nivel que

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

Page 10: sesion04-ensamblador.ppt [Modo de compatibilidad] · Ensamblador It d ióIntroducción Es el leng aje de más bajo ni el q e Introducción • Es el lenguaje de más bajo nivel que

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

Page 11: sesion04-ensamblador.ppt [Modo de compatibilidad] · Ensamblador It d ióIntroducción Es el leng aje de más bajo ni el q e Introducción • Es el lenguaje de más bajo nivel que

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

Page 12: sesion04-ensamblador.ppt [Modo de compatibilidad] · Ensamblador It d ióIntroducción Es el leng aje de más bajo ni el q e Introducción • Es el lenguaje de más bajo nivel que

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

Page 13: sesion04-ensamblador.ppt [Modo de compatibilidad] · Ensamblador It d ióIntroducción Es el leng aje de más bajo ni el q e Introducción • Es el lenguaje de más bajo nivel que

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

Page 14: sesion04-ensamblador.ppt [Modo de compatibilidad] · Ensamblador It d ióIntroducción Es el leng aje de más bajo ni el q e Introducción • Es el lenguaje de más bajo nivel que

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

Page 15: sesion04-ensamblador.ppt [Modo de compatibilidad] · Ensamblador It d ióIntroducción Es el leng aje de más bajo ni el q e Introducción • Es el lenguaje de más bajo nivel que

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

Page 16: sesion04-ensamblador.ppt [Modo de compatibilidad] · Ensamblador It d ióIntroducción Es el leng aje de más bajo ni el q e Introducción • Es el lenguaje de más bajo nivel que

Ensamblador

IntroducciónInstruccionesTransferencia

ALUControl

INSTRUCCIONES ALUEntrada/SalidaFlagsOtros

INSTRUCCIONES ALU

162007-2008

Page 17: sesion04-ensamblador.ppt [Modo de compatibilidad] · Ensamblador It d ióIntroducción Es el leng aje de más bajo ni el q e Introducción • Es el lenguaje de más bajo nivel que

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

Page 18: sesion04-ensamblador.ppt [Modo de compatibilidad] · Ensamblador It d ióIntroducción Es el leng aje de más bajo ni el q e Introducción • Es el lenguaje de más bajo nivel que

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

Page 19: sesion04-ensamblador.ppt [Modo de compatibilidad] · Ensamblador It d ióIntroducción Es el leng aje de más bajo ni el q e Introducción • Es el lenguaje de más bajo nivel que

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

Page 20: sesion04-ensamblador.ppt [Modo de compatibilidad] · Ensamblador It d ióIntroducción Es el leng aje de más bajo ni el q e Introducción • Es el lenguaje de más bajo nivel que

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

Page 21: sesion04-ensamblador.ppt [Modo de compatibilidad] · Ensamblador It d ióIntroducción Es el leng aje de más bajo ni el q e Introducción • Es el lenguaje de más bajo nivel que

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

Page 22: sesion04-ensamblador.ppt [Modo de compatibilidad] · Ensamblador It d ióIntroducción Es el leng aje de más bajo ni el q e Introducción • Es el lenguaje de más bajo nivel que

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

Page 23: sesion04-ensamblador.ppt [Modo de compatibilidad] · Ensamblador It d ióIntroducción Es el leng aje de más bajo ni el q e Introducción • Es el lenguaje de más bajo nivel que

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

Page 24: sesion04-ensamblador.ppt [Modo de compatibilidad] · Ensamblador It d ióIntroducción Es el leng aje de más bajo ni el q e Introducción • Es el lenguaje de más bajo nivel que

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

Page 25: sesion04-ensamblador.ppt [Modo de compatibilidad] · Ensamblador It d ióIntroducción Es el leng aje de más bajo ni el q e Introducción • Es el lenguaje de más bajo nivel que

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

Page 26: sesion04-ensamblador.ppt [Modo de compatibilidad] · Ensamblador It d ióIntroducción Es el leng aje de más bajo ni el q e Introducción • Es el lenguaje de más bajo nivel que

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

Page 27: sesion04-ensamblador.ppt [Modo de compatibilidad] · Ensamblador It d ióIntroducción Es el leng aje de más bajo ni el q e Introducción • Es el lenguaje de más bajo nivel que

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