Você está na página 1de 14

TEMA 4

LENGUAJE MAQUINA Y ENSAMBLADOR

Tema 4-1

Contenidos:
Lenguaje mquina Formatos de instruccin mquina Tipos de instrucciones mquina Modos de direccionamiento Implcito Inmediato Directo absoluto Directo relativo Indirecto Lenguaje ensamblador Programa ensamblador, programa fuente y programa objeto

Tema 4-2

e)

Lenguaje mquina
El ordenador slo entiende un lenguaje muy restringido y de bajo nivel llamado lenguaje mquina El lenguaje mquina depende del procesador Existe una incompatibilidad innata entre los distintos procesadores Constituye una de las caractersticas ms importantes de su arquitectura El lenguaje mquina establece las capacidades bsicas del computador El lenguaje mquina est formado por un conjunto de instrucciones mquina Cada instruccin tiene una representacin determinada en forma de bits, almacenados en memoria Los distintos tipos de representacin se denominan formato de instruccin

Tema 4-3
te)

Formatos de Instruccin
Ejemplo de instrucciones mquina

100 11 10 0
Se usan nemotcnicos : MOV R3,R2 ; R3 R2

Vemos que las instrucciones mquina estn formadas por ceros y unos

Tema 4-4

Formatos de Instruccin mquina


Las instrucciones se dividen en campos (cadenas de bits contiguos) Tipos bsicos de campos:
Cdigo de operacin: indica la operacin a realizar Campo de operandos (puede no existir o dividirse en subcampos): contiene los operandos o las direcciones de los operandos
Cdigo de operacin Operandos

n bits

m bits

Formatos tpicos de instruccin:


Cdigo de operacin

Instr. sin operandos

NOP

Cdigo de operacin

operando

Instr. de 1 operando Instr. de 2 operandos de 3 operandos

INC R2 ADD R4,R5

; R2 <- R2+1 ;R4 <- R4+R5

Cdigo de operacin

operando1

operando2

Cdigo de operacin

operando1

operando2

operando3

ADD R3,R4,R5 ; R3 <- R4+R5


Tema 4-5

Lenguaje mquina Tipos de instrucciones mquina


De transferencia de datos Aritmticas Lgicas Comparacin Desplazamiento Acceso a bits individuales Transferencia de control De entrada/salida Miscelneas

Tema 4-6

Tipos de instrucciones mquina


Ejemplo de programa para sumar 30 bytes de memoria almacenados a partir de la posicin 3700H y deje el resultado en la direccin 5000H. Usaremos direccionamiento indirecto a memoria. SOLUCIN: 1000: 1001: 1002: 1003: 1004: 1005: 1006: 1007 1100: 1101: 1102: 1103:

MOV SP , #2000H ; inicializo puntero de pila CALL 1100h ;llamo a la subrutina inicializar ADD R3, [R1] ; R3M(R1) + R3 INC R1 ;incremento direccin de memoria DEC R2 ;decremento contador de bytes JNZ 1002 ;contino sumando hasta terminar los 30 bytes STORE /5000H, R3 ; escribo resultado de la suma HLT ;fin de programa MOV R1, #3700H MOV R2, #30 MOV R3, #00 RET ; inicializo registro R1 ; inicializo contador de bytes : blanqueo registro R3 ;retorno de subrutina
Tema 4-7

Lenguaje mquina Tipos de instrucciones mquina


Instrucciones de transferencia de datos Permiten repetir en el operando destino la informacin almacenada en el operando origen Origen y destino pueden ser registros o posiciones de memoria MOVE o TRANSFER (MOVE) STORE (ST) LOAD (LD) CLEAR o RESET (CLR) SET PUSH POP

Tema 4-8

Lenguaje mquina Tipos de instrucciones mquina


Instrucciones aritmticas (Todas ellas afectan a los bits de estado)

ADD (ADD) SUBTRACT (SUB) INCREMENT (INC) DECREMENT (DEC) MULTIPLY (MUL) DIVIDE (DIV) ADD WITH CARRY (ADDC) SUBTRACT WITH BORROW (SUBC)

UNIDAD ARITMTICO LGICA (ALU)

REGISTRO DE ESTADO

Tema 4-9

Lenguaje mquina. Tipos de instrucciones mquina


Instrucciones de comparacin (afectan a los bits de estado)

COMPARE (CMP)

ALU

REGISTRO DE ESTADO

Instrucciones lgicas(afectan a los bits de estado) Se realizan en cada uno de los bits de los operandos de forma independiente
AND (AND) OR (OR) NOT (NOT) XOR (XOR)

Instrucciones de desplazamiento (afectan a los bits de estado)


SHIFT (SHL, SHR) ROTATE (ROL, ROR)

Instrucciones de bit
BIT SET BIT CLEAR
Tema 4-10

Lenguaje mquina. Tipos de instrucciones mquina

Instrucciones de transferencia de control


Tambin llamadas de salto o bifurcacin Permiten alterar la secuencia normal de ejecucin del programa

Bifurcaciones incondicionales
Sin retorno (JUMP / JMP) Con retorno (CALL)

Bifurcaciones condicionales
Sin retorno (Jcnd) Con retorno (Ccnd)
Tema 4-11
e

Bifurcaciones Condicionales
Tienen dos secuencias distintas
Cuando no se cumple la condicin de bifurcacin no hacen nada Cuando se cumple, modifican el PC, que recibe la direccin de salto

Condiciones de bifurcacin
ZERO (Z) - GREATHER THAN (GT)
Ns con signo (C2)

NOT ZERO (NZ) - GREATHER THAN OR EQUAL (GE) EQUAL (E) - LESS THAN (LT) NOT EQUAL (NE) - LESS THAN OR EQUAL (LE) CARRY (C) - PARITY EVEN (PE) NOT CARRY (NC) - PARITY ODD (PO) Ns sin signo POSITITIVE (P) - HIGHER (H) NEGATIVE (N) - NOT HIGHER (NH) OVERFLOW (V) - LOWER (L) NO OVERFLOW (NV)- NOT LOWER (NL)
Tema 4-12

Lenguaje mquina
Tipos de instrucciones mquina Instrucciones de entrada/salida
Son operaciones de transferencia, con la peculiaridad de que el destino o el origen es un registro de un perifrico

INPUT (IN) OUTPUT (OUT) Instrucciones miscelneas


Son operaciones que no pertenecen a ninguna de las clasificaciones anteriores

HALT (HLT) NO OPERATION (NOP)


Tema 4-13

Modos de direccionamiento
Los modos de direccionamiento especifican el lugar concreto donde se encuentran los operandos, donde se almacenar un resultado o la direccin donde hay que saltar si es una instruccin de salto.

Dnde pueden estar los operandos?


En la propia instruccin En un registro En memoria principal En una direccin de E/S

Qu informacin de los operandos lleva la instruccin?


Ninguna de manera explcita El propio operando El identificador del registro donde est el operando La direccin de memoria donde est el operando La direccin de la direccin donde est el operando
Tema 4-14

Modos de direccionamiento Clasificacin


Direccionamiento Implcito Direccionamiento Inmediato Direccionamiento Directo (o absoluto).
A Registro A memoria

Direccionamiento Indirecto
A Registro A Memoria

Direccionamiento relativo

Tema 4-15

Modos de direccionamiento
Ejemplo :

ADD

#31 ;R0 < R0 + 31


Implcito e Inmediato

Tiene 2 operandos: R0 y el n 31

tendr dos modos de direccionamiento:

Direccionamiento implcito: Es cuando el operando se encuentra en un registro que est implcitamente especificado en el propio cdigo de operacin Direccionamiento inmediato: La instruccin contiene el operando
Hay mquinas que permiten distintos tamaos de operandos inmediatos

1100 0110
cdigo operacin (ADD)

00011111
operando(31)
Tema 4-16

Modos de direccionamiento
Ejemplo :

LOAD R1, /2500H ;R1 <- M(2500 H )


Directo absoluto a Registro Directo absoluto a Memoria

Tiene 2 operandos: R0 y dir de memoria

tendr dos modos de direccionamiento:

Direccionamiento directo absoluto :


A registro: la instruccin contiene el identificador del registro donde se encuentra el operando A memoria: la instruccin contiene la direccin completa de memoria donde se encuentra el operando

Tema 4-17

Modos de direccionamiento

Ejemplo :

MOV R3, [R1]

;R3 <- M(R1)

Indirecto a registro Directo absoluto a Registro

Direccionamiento indirecto
La instruccin contiene el registro o direccin de memoria que contiene la direccin del operando

Tema 4-18

Modos de direccionamiento

Ejemplo :

ADD R3, 20[R1]

;R3 <- R3 + M(20 +R1)


relativo a registro ndice)

Indexado ( o directo Directo absoluto a Registro

Direccionamiento relativo a registro ndice (direccionamiento indexado) La instruccin contiene el identificador de un registro ndice + un desplazamiento La direccin del operando se forma sumndole al registro ndice el desplazamiento

Tema 4-19

Modos de direccionamiento

Ejercicio: Indicar los modos de direccionamiento de las siguientes instrucciones

1.2. 3.4.5 .-

MOV R3, #50 LOAD R2, /50 SUB 5[R3], R4 ADD [R3], R7 INCR [1000]

Tema 4-20

Lenguaje ensamblador Inconvenientes del lenguaje mquina


Las instrucciones en lenguajes mquina son un conjunto de bits usualmente representado en binario o hexadecimal La redaccin de programas es compleja El resultado es muy poco legible Adems, el programador ha de realizar manualmente la asignacin de memoria Decidir en qu posiciones colocar el cdigo y en cuales los datos Controlando las direcciones de salto, ... Para solucionar estos dos inconvenientes, se utiliza el lenguaje ensamblador

Tema 4-21

Lenguaje ensamblador

El lenguaje ensamblador permite: Escribir las instrucciones en notacin simblica o nemotcnica, en vez de cdigo hexadecimal o binario Utilizar direcciones de memoria simblicas, en lugar de direcciones binarias absolutas Insertar lneas de comentarios

Es un lenguaje simblico de bajo nivel

Tema 4-22

Lenguaje ensamblador
Programa en lenguaje ensamblador (i8085):
INICIO: PILA: .EQU .EQU .ORG JMP .BYTE .BYTE LXI MVI LDA LXI MOV SUB JNZ INR JMP HLT .END 1000H FFFFH INICIO COMIENZO 10H 20H SP,PILA C,0 SUMANDO1 H,SUMANDO2 B,M B FINAL C BUCLE

SUMANDO1: SUMANDO2: COMIENZO: BUCLE:

FINAL:

; ; ; ; ; ; ; ; ; ; ; ; ;

ME SALTO LOS DATOS (NO SON EJECUTABLES) RESERVO UN BYTE Y LO INICIO A 10H RESERVO EL BYTE CONTIGUO Y LO INICIO A 20H INICIALIZA LA PILA C0 A M(SUMANDO1), A=10H HL SUMANDO2 B M(HL), B=20H AA-B TERMINA CC+1 REPITE EL BUCLE DETIENE EL MICROPROCESADOR

El mismo programa en lenguaje mquina: C3 05 10 10 20 31 FF FF 0E 00 3A 03 10 21 04 10 46 90 C2 16 10 0C C3 0A 10 76 00 00 00 00 00 00


Tema 4-23
rt

Formato de Sentencias en Lenguaje Ensamblador


Instrucciones
Son las representaciones simblicas de las instrucciones mquina, es decir, los nemotcnicos

Sentencias Directivas (o pseudoinstrucciones)


Son rdenes que se le dan al propio programa ensamblador, y que por tanto, dirigen de alguna manera la traduccin al lenguaje mquina.

Tanto las instrucciones como las directivas deben ocupar una nica lnea en nuestro programa ensamblador, descompuesta en cuatro campos: etiqueta, operacin, operandos y comentario < sentencia > ::= [ etiqueta ] < cdigo > [ operandos ] [ ;comentario ]

Tema 4-24

Programa ensamblador, fuente y objeto


Un programa ensamblador es un compilador como pueda ser el Turbo C de Borland Su funcin es leer un programa fuente (escrito en lenguaje ensamblador) y traducirlo a un programa objeto (en lenguaje mquina)
Programa objeto

Programa Fuente
Escrito en lenguaje ensamblador

Ensamblador
Es un traductor

Escrito en lenguaje mquina


Informe

(o fichero listado)

Tema 4-25

Ejemplo de fichero listado


TASM 8085 Assembler. Speech Technology Incorporated. 0001 0002 0003 0004 0005 0006 0007 0008 0009 0010 0011 0012 0013 0014 0015 0016 0017 0018 0019 0000 0000 1000 1000 1000 1003 1004 1005 1005 1008 100A 100D 1010 1011 1012 1015 1016 1019 101A INICIO: PILA: Ej1.asm page 1 .EQU .EQU .ORG 1000H FFFFH INICIO COMIENZO 10H 20H SP,PILA C,0 SUMANDO1 H,SUMANDO2 B,M B FINAL C BUCLE ; ME SALTO LOS DATOS (NO SON EJECUTABLES) ; RESERVO UN BYTE Y LO INICIO A 10H ; RESERVO EL BYTE CONTIGUO Y LO INICIO A 20H ; ; ; ; ; ; ; ; ; ; INICIALIZA LA PILA C 0 A M(SUMANDO1), A=10H HL SUMANDO2 B M(HL), B=20H A A - B TERMINA C C + 1 REPITE EL BUCLE DETIENE EL MICROPROCESADOR

C3 05 10 10 20 31 0E 3A 21 46 90 C2 0C C3 76 FF FF 00 03 10 04 10

JMP SUMANDO1: .BYTE SUMANDO2: .BYTE COMIENZO: LXI MVI BUCLE: LDA LXI MOV SUB JNZ INR JMP FINAL: HLT .END

Archivo .lst

19 10 0A 10

Label Value -----------------INICIO 1000 COMIENZO 1005

Label Value -----------------PILA FFFF BUCLE 100A

Label Value -----------------SUMANDO1 1003 FINAL 1019

Label Value -----------------SUMANDO2 1004

Tabla Smbolos

ADDR 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ----------------------------------------------------1000 C3 05 10 10 20 31 FF FF 0E 00 3A 03 10 21 04 10 1010 46 90 C2 16 10 0C C3 0A 10 76 00 00 00 00 00 00 tasm: Number of errors = 0

Mapa de Direcciones de Memoria

Tema 4-26

Proceso Completo de Creacin y Ejecucin de un Programa


Sistema operativo Comandos Monitor residente Controladores de E/S

Mdulo fuente Ensamblador

Mdulo objeto Montador

Mdulo de carga Cargador Programa en ejecucin

Listado Mapa de memoria Hacer correcciones Otros mdulos objeto Librerias

Tema 4-27

ANEXO: Resumen de Lenguaje mquina, Lenguaje ensamblador y


Programa ensamblador
Lenguaje mquina Es el nico lenguaje que entiende directamente el computador Es un lenguaje muy restringido y de bajo nivel Est formado por instrucciones mquina Cada instruccin mquina est formada por ceros y unos El lenguaje mquina depende del procesador Existe una incompatibilidad innata entre los distintos procesadores Lenguaje ensamblador El lenguaje ensamblador es un lenguaje de bajo nivel que facilita la tarea de programar en lenguaje mquina. Permite: Escribir las instrucciones mquina en notacin simblica o nemotcnica, en vez de cdigo hexadecimal o binario Utilizar direcciones de memoria simblicas, en lugar de direcciones binarias absolutas Insertar lneas de comentarios Programa ensamblador Es un traductor. Su funcin es leer un programa fuente (escrito en lenguaje ensamblador) y traducirlo a un programa objeto (en lenguaje mquina) Tema 4-28

Você também pode gostar