Professional Documents
Culture Documents
computador
v 3.0.
Objetivo de la Prctica
ndice
1.
2.
3.
4.
Utilizan notaciones cercanas a las habituales en el mbito en que se usan. Con estos
lenguajes las operaciones se expresan con sentencias o frases muy parecidas al
lenguaje matemtico o al lenguaje natural (ingls).
Cdigo de operacin:
C
o
e
especifica
la operacinn que realizaa la instrucccin.
C
Campo
de modo de direccionam
d
miento: Inddica la form
ma en la que
q se
e
expresan
loss operandoss, aunque esto
e
puede estar
e
implccito en el c
digo
d operacinn.
de
D
Direcciones
s de los opeerandos: Dependiendoo de la operracin, pued
de ser
q en la insstruccin see expliciten uno, dos o ms
que
m operanndos, cada uno
u de
loos cuales puuede direcciionarse de forma
f
distinnta.
nes mquin
na
1.2.22.- Propiedaades de las instruccion
Las prop
piedades geenerales quee suelen cum
mplir las innstruccioness de mquin
na son
las siguieentes:
Realizan un
R
na nica y sencilla fu
uncin, por lo que su decodificaccin e
innterpretacin es muy seencilla.
E
Emplean
u nmeroo fijo de operandos
un
o
con una representa
acin
d
determinad
da: No debenn tener una sintaxis am
mbigua.
L codificaacin de las instrucciiones es baastante sisttemtica, puesto
La
p
q ello faciilita su decoodificacin. Siguen el mismo
que
m
patrn.
L instruccciones son
Las
n autoconttenidas e independieentes. Es decir,
d
c
contienen
tooda la inforrmacin neccesaria paraa ejecutarsee, no requiriendo
d la informacin de
de
d otras in
nstruccionees y no ddependiend
do su
innterpretacin de la posicin que ocupan en laa memoria o en el progrrama.
Debe ser eficaz: Ha de permitir una alta velocidad de clculo, sin exigir
a cambio una alta complicacin de la Unidad de Control ni de la Unidad
Aritmtica.
Transferencia de informacin
Aritmtico-Lgicas y de desplazamientos de bits.
Trasnferencias de control: Saltos, llamadas a procedimientos, Parada
del procesador,...
Miscelneas: Entrada-Salida, Temporizaciones, ...
La ganancia de velocidad se consigue por dos razones. Por un lado, hay que leer
menos instrucciones de la memoria principal y, por otro lado, la unidad
aritmtica de estas mquinas est preparada para ejecutar este tipo de
instrucciones lo que permite ejecutar muy rpidamente las n operaciones
relativas a una instruccin vectorial.
1.3.2.- Instrucciones multimedia
A mediados de los aos 90 se inicia la explosin de las aplicaciones multimedia,
con el tratamiento generalizado del sonido y de las imgenes. Estas aplicaciones
exigen una gran cantidad de procesamiento matemtico y precisan de unos
formatos de datos muy especficos. As, el sonido se digitaliza con 16 bits de
precisin, por lo que exige un tratamiento de entero con signo de 16 bits, por
otra parte, cada pxel que forma parte de una imagen RGB requiere tres palabras
de 8 bits que almacenan sendos enteros positivos.
En un computador convencional de 32 bits de ancho de palabra, por cada
muestra de sonido procesada se est aprovechando solamente 16 de esos 32 bits
de la palabra. En la imgenes la situacin an es peor, puesto que se ha de
procesar cada byte de forma independiente.
Para mejorar esta situacin los fabricantes de computadores han introducido
unas nuevas instrucciones que se denominan de multimedia.
Estas instrucciones se basan en dos principios comunes al procesamiento
multimedia y de comunicaciones:
Estos tipos de datos resultan tiles debido a que, normalmente, los programas
multimedia trabajan con pequeas unidades de datos.
Escribir las instrucciones utilizando para representar los cdigos de operacin una
notacin simblica o mnemotcnica en lugar de cdigos numricos. Normalmente
estos cdigos simblicos estn constituidos por unas pocas letras que, en forma
Como hemos visto el formato de instruccin est constituido normalmente por los
campos:
Cada fabricante de procesadores impone su propio juego de instrucciones que tiene que
proporcionar a los fabricantes de compiladores para que elaboren el cdigo mquina
apropiado.
Vamos a estudiar como mquina ejemplo la arquitectura y programacin de un
computador muy sencillo:
INSTRUCCIONES DE TRANSFERENCIA
Instruccin
Significado
Ejemplo:
MOVE A, [Direccin]
Carga en el registro A el valor almacenado en la direccin especificada en la instruccin
MOVE [Direccin], B
Carga el contenido de B en la direccin de memoria especificada en la instruccin
MOVE #valor, A
Error, no est permitida esta operacin.
MOVE [Direccin], [Direccin]
Error, no est permitida esta operacin.
INSTRUCCIONES ARITMTICAS
Instruccin
Significado
Ejemplo:
ADD B, #15
Carga en A el contenido de B ms el valor 15
ADD [10], A
Carga en A el contenido de la direccin de memoria 10 ms el contenido de A
ADD [10], #15
Error, no est permitida esta operacin
Instruccin
Significado
Ejemplo:
SUBTRAC B, #15
Carga en A el contenido de B menos el valor 15
SUBTRAC [10], A
Carga en A el contenido de la direccin de memoria 10 menos el valor del registro A
SUBTRAC [10], #25
Error, no est permitida esta operacin
Instruccin
Significado
Instruccin
Significado
Instruccin
Significado
Ejemplo:
DIV B, #15
Carga en A el contenido de B dividido entre 15 y en B el resto
DIV [10], A
Carga en A el contenido de la direccin de memoria 10 dividida entre A y en B el resto
DIV [10], #25
Error, no est permitida esta operacin
Si como consecuencia de una operacin aritmtica se produce desbordamiento, el
resultado puede ser impredecible.
INSTRUCCIONES DE COMUNICACIN
Instruccin
Significado
Puerto IN:
Teclado
Puerto OUT: Pantalla
INSTRUCCIONES DE CONTROL
Instruccin
Significado
Instruccin
Significado
INSTRUCCIONES DE SALTO
Instruccin
Significado
Carga en el CP la direccin de
memoria especificada en la instruccin
Instruccin
Significado
Almacena en el CP la direccin
especificada en la instruccin si C=1
Instruccin
Significado
Almacena en el CP la direccin
especificada en la instruccin si C=0
Instruccin
Significado
Almacena en el PC la direccin
especificada en la instruccin si Z=1
Instruccin
Significado
Almacena en el PC la direccin
especificada en la instruccin si Z=0
Direccionamiento inmediato
Se indica el valor tal cual. Debe ir precedido del smbolo #
Ejemplo: MOVE A, #23
Mueve el valor 23 al registro A
Direccionamiento indirecto
El dato al que se hace referencia se encuentra en la direccin de memoria indicada
por el registro I: [I]
Ejemplo: MOVE A, [I]
Mueve el contenido de la direccin de memoria indicada por I al registro A
Debern estar formados por una lista de instrucciones separadas por saltos de lnea
(una instruccin debajo de otra) en un fichero de tipo texto con extensin hmj.
La primera instruccin se almacena en la direccin de memoria 0, el contenido
inicial de los registros, de la memoria y de los indicadores es 0.
Al principio de cada instruccin se deber escribir el nmero de lnea de esa
instruccin. Los nmeros de lnea no tienen porqu ser correlativos, pero si que
deben formar una sucesin montona estrictamente creciente.
Los comentarios se indican con // y se considera comentario todo lo escrito
desde ah hasta el final de la lnea.
MOVE A, #8
STOP
Ejemplo 2
Almacena el valor 67 en la posicin de memoria 10
0
1
2
3
MOVE A, #67
MOVE I, #10
MOVE [I], A
STOP
Ejemplo 3
Almacena en A el resultado de 20 + 15 5
0 MOVE A, #15
1 SUBTRACT A, #5
2 ADD A, #20
3 STOP
//A:=15-5
//A:=20+10
Ejemplo 4
Se lee un dato de entrada si el valor coincide con el valor almacenado en la direccin de
memoria 10 entonces se visualiza dicho valor por el puerto de salida.
0
1
2
3
4
PORT IN, A
COMPARE A, [10]
JUMP IF NOT EQUAL TO 5
PORT OUT, A
STOP
Ejemplo 5
Mostrar por el puerto de salida la serie numrica de 0 hasta un nmero dado por el
puerto de entrada.
0
1
2
3
4
5
6
7
8
9
10
11
PORT IN, A
//Lee el valor del puerto y lo almacena en el registro A
MOVE [164], A //Almacenamos en la direccin de memoria 164 el valor ledo
COMPARE A, #0
JUMP IF LESS THAN 11 //Si el nmero que nos dan es menor que 0, no visualizamos
MOVE A, #0
PORT OUT, A
INCREMENT A
MOVE B,[164]
COMPARE B, A
JUMP IF LESS THAN 11
JUMP TO 5
STOP
nada
Ejemplo 6
Mostrar por el puerto de salida la tabla de multiplicar del 7.
0
1
2
3
4
5
6
7
8
MOVE B, #7
MOVE [200], B
MOVE B, #0
MUL B, [200]
PORT OUT A
INCREMENT B
COMPARE B, #11
JUMP IF LESS THAN 3
STOP
Ejemplo 7
Dados dos nmeros por el puerto de entrada, mostrarlos por orden creciente en el puerto
de salida.
0
1
2
3
4
5
6
7
8
9
PORT IN, A
PORT IN, B
COMPARE A, B
JUMP IF GREATER THAN 7
PORT OUT A
PORT OUT B
JUMP TO 9
PORT OUT B
PORT OUT A
STOP
Ejemplo 8
Mostrar por el puerto de salida la serie de nmeros de Fibonacci hasta un nmero
indicado en el puerto de entrada.
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
PORT IN, A
MOVE [200], A
//almaceno el nmero de elementos de la
MOVE A, #0
MOVE [201],A
//almaceno el nmero de elementos de la
COMPARE A, [200]
JUMP IF LESS THAN 7
JUMP 30
MOVE A, #1
//Muestra 1
PORT OUT A
MOVE [201],A
COMPARE A, [200]
JUMP IF LESS THAN 13
JUMP TO 31
MOVE B, #1
PORT OUT A
//Muestra 1
//salvo el valor de A
MOVE [202], A
INCREMENT A
MOVE [201], A
COMPARE A, [200]
JUMP IF LESS THAN 21
JUMP TO 31
MOVE A, [202]
ADD A, B
MOVE B, [202]
PORT OUT A
//Muestra el siguiente elemento de
MOVE [202], A
MOVE A, [201]
INCREMENT A
MOVE [201], A
COMPARE A, [200]
JUMP IF LESS THAN 21
STOP
la serie
4.- Ejercicios
Programa 1 (Prctica Junio 2001):
Implementar un programa que lea por el puerto de entrada un nmero entero positivo n y
muestre por el puerto de salida un 1 si el nmero es primo y un 0 si no lo es.