You are on page 1of 7

Programacin de computadores con debugger

Practica 1 materia: Microprocesadores y microcontroladores


SAMUEL QUINE!" #ASAS
s am uk as as @hotm ail.c om
Resumen En el desarrollo de la prctica es de
disear un programa en lenguaje de
programacin assembler, luego un programa en
simuproc, para programar un microprocesador
virtual.
1$ Introduccin
El siguiente Trabajo consiste en el diseo de un
programa utilizando el lenguaje de programacin
assembler que es el ms cercano al lenguaje
mquina y adems es un lenguaje de bajo nivel
se utiliz la herramienta de simulacin de
programacin simuproc el cual permite programar
un microprocesador virtual y correr programas.
%$ "b&eti'os
!plicar el conocimiento general y principios de
operaciones del programa "#$%&'() en el
entorno de un escenario.
!plicar los conceptos !dquiridos en el
lenguaje
assembler al realizar el *iseo de dos programas
previamente determinados.
&or medio de los ejercicios propuestos en la
gu+a de laboratorio sustentar el proceso de
programacin en el lenguaje de bajo nivel.
%$1 eor(a
,as describir- as+. // 0 #1"T 2parmetro3 *nde.
// signi4ica el )digo de la #nstruccin #1"T es la
instruccin 2parmetro3 es el parmetro si esta
tiene o 2parametro5 parametro63 si el parmetro
es doble !c pondr- algunos ejemplos Estas son
las instrucciones soportadas por la versin actual.
75 0 ,*! 2mem3
)argue en !/ el contenido de la direccin de
$emoria especi4icada. *igamos que en la posicin
de memoria 58 est el valor 57555 despu-s de
ejecutada la instruccin
,*! 58 se obtiene que !/957555 Es equivalente
a usar la instruccin $(: !/ 58
;ay casos donde es mejor usar $(: si se desea
pasar datos sin tener que pasarlos por !/.
76 0 "T! 2mem3
<uarde el contenido de !/ en la direccin de
$emoria especi4icada. "upongamos que tengo el
valor 5757557 en el registro !/ y quiero llevarlo a
la posicin de memoria =) la instruccin es "T!
=) Es equivalente a usar la instruccin $(:
=)!/ Es mejor usar $(: debido a que si quiero
pasar alg>n dato de una direccin de memoria a
otra usando ,*! y "T! ser+an dos instrucciones.
,*!
mem5 y luego "T! mem6 mientras que con $(:
ser as+.
$(: mem6 mem5
7= 0 /!?
#ntercambia los valores de los registros !/ y ?/
Esta instruccin no necesita parmetros.
7@ 0 ),!
;ace !/ 9 7
7A 0 &%"; 2registro3
Env+a el valor del registro especi4icado a la pila
7B 0 &(& 2registro3
Trae de la &ila el >ltimo :alor llevado por &%";
Cindicado por el registro "&D y lo almacena en el
registro especi4icado.
1ota. En todas las instrucciones desde 7E hasta la
5E *est puede ser una direccin de $emoria o un
'egistro 7E 0 #1)
2dest3
#ncrementa en 5 el destino especi4icado el
parmetro puede ser una direccin de memoria o
un registro. "i en la posicin de memoria E? est
el valor 5775 al ejecutar #1)
E? se obtiene que ahora el valor de E? es 5757.
7F 0 *E) 2dest3
*ecremento en 5 el destino especi4icado "i el
destino queda 9 7 se vuelve G 9 5
57 0 $(: 2destorig3
)opia el valor almacenado en el origen al destino.
El destino yHo origen pueden ser registros o
direcciones de memoria o combinacin de estos.
&ara copiar lo que est en la posicin de memoria
56E a la posicin *6 se usa la instruccin $(:
*6 56E
55 0 !1* 2destorig3
I lgico hace un I lgico entre todos los bits de
los dos
operndos escribiendo el resultado en el destino.
,os parmetros pueden ser direcciones de
memoria o 'egistros.
,a siguiente regla aplica.
5 !1* 5 9 5
5 !1* 7 9 7
7 !1* 5 9 7
7 !1* 7 9 7
"i en !/ tengo el n>mero 5775575 y en la pos =8
tengo el n>mero 55755. !l ejecutar la instruccin
!1* !/ =8 obtendr- en !/ el resultado 5775. El
I lgico lo que hace
es dejar los bits en com>n que tengan los dos
n>meros.
56 0 1(T 2destino3
1( lgico invierte los bits del operando 4ormando
el complemento del primero.
1(T 5 9 7
1(T 7 9 5 "i en !/ tengo 57755 al ejecutar 1(T
!/ obtengo !/95555555555575577
5= 0 (' 2destorig3
( inclusive lgico todo bit activo en cualquiera de
los operndoos ser activado en el destino. ,a
siguiente regla aplica.
5 (' 5 9 5
5 (' 7 9 5
7 (' 5 9 5
7 (' 7 9 7
"i en =! tengo el n>mero 5775575 y en la pos =?
tengo el n>mero 55755. !l ejecutar la instruccin
(' =! =? obtendr- en =! el resultado 5755555.
5@ 0 /(' 2destorig3
( eJclusivo realiza un ( eJclusivo entre los
operndoos y almacena el resultado en destino.
,a siguiente regla aplica.
5 /(' 5 9 7
5 /(' 7 9 5
7 /(' 5 9 5
7 /(' 7 9 7
"i en =! tengo el n>mero 5775575 y en la pos =?
tengo el n>mero 55755. !l ejecutar la instruccin
/(' =! =? obtendr- en =! el resultado 5757557.
5K 0 '(, 2destveces3
'ota los bits a la izquierda las veces especi4icadas
Cen decimalD los bits que salen por la izquierda re0
entran por la
*erecha. En el )arry 8lag queda el >ltimo bit
rotado.
"upongamos que en la posicin BE tengo el
numero 575557
!l Ejecutar... obtengo en BE )9
'(, BE 6 57555777 7
'(, BE B 5755577777777 7
'(, BE 5= 5577777777777575 5
5A 0 '(' 2destveces3
'ota los bits a la derecha las veces especi4icadas
Cen decimalD los ?its que salen por la derecha re0
entran por la izquierda. El )arry 8lag guarda el
>ltimo bit rotado.
5B 0 ";, 2destveces3
*esplaza los bits a la izquierda el n>mero de
veces especi4icado Cen decimalD agregando ceros
a la derecha el
)arry 8lag guarda >ltimo bit desplazado.
5E 0 ";' 2destveces3
*esplaza los bits a la *erecha el n>mero de veces
especi4icado Cen decimalD agregando ceros a la
izquierda el )arry 8lag guarda >ltimo bit
desplazado. "upongamos que en la posicin 5!
tengo el numero 575557 !l
Ejecutar... obtengo en 5! )9
";' 5! 6 5755 5
";' 5! A 7 5
";' 5! 55 7 7
67 0 !** 2mem3
"umar.
!/ 9 !/ L el contenido de la direccin de
memoria. "i el resultado de la suma supera los 5A
bits el resultado queda as+. en ?/ los bits ms
signi4icativos y en ?/ los menos tambi-n se
activa el (ver4loM 4lag.
65 0 "%? 2mem3
'estar.
!/ 9 !/ 0 el contenido de la direccin de
memoria.
66 0 $%, 2mem3
$ultiplicar.
!/ 9 !/ N el contenido de la direccin de
memoria.
"i el n>mero resultante supera su longitud en
binario de 5A bits este resultado se parte
almacenando los bits ms signi4icativos en el
'egistro ?/. "i el resultado de una operacin
4uera 575575777555577757555 C65 bitsD ,os
registros quedar+an as+.
! 9 5777555577757555 Clos >ltimos 5AbitsD
? 9 57557 Clos primeros ?its Clos ms
signi4icativosDD
Tambi-n se activa el 8lag (ver4loM para indicar
que en la >ltima operacin sucedi esto.
6= 0 *#: 2mem3
*ividir.
!/ 9 !/ H el contenido de la direccin de
memoria
?/9!/ O el contenido de la dir de memoria C?/ 9
modulo o residuoD.
6@ 0 ),1
,impia el 1egative 8lag. 1 9 7
6K 0 ),)
,impia el )arry 8lag. ) 9 7
6A 0 "T)
&one el )arry 8lag. ) 9 5
6B 0 )$)
)omplementa CinvierteD el )arry 8lag. "i ) 9 5
vuelve ) 9
7 y viceversa.
6F 0 ,((& 2mem3
*ecrementa )/ y salta a la &os de memoria si )/
no es cero.
=7 0 P$& 2mem3
"alto incondicional. &) 9 direccin de memoria
donde est la siguiente instruccin a ejecutarQ
=5 0 PER 2mem3
"altar si son iguales.
"i G 9 5 &) 9 contenido de la memoria. 8uncin
equivalente en ).
i4 C!/ 99 memD
=6 0 )$& 2mem3
)ompara !/ con 2mem3 si !/ es mayor G97
197 si es igual G95 197 si es menor G97 195
"upongamos que en
!/ tengo el n>mero 57557 y en la posicin de
memoria @< tengo el n>mero 5577 al ejecutar la
instruccin )$& @< obtengo que como el numero
almacenado en !/ es mayor entonces los 8lags
de )ontrol me quedan as+. G97 y 197
1ota. "olo en las versiones 5.=.A.6 y anteriores En
!/ quedaba el resultado de la resta Cde la
comparacinD !hora ya no. "ugerencia. si
necesita el valor original de !/ puede usar la pila
para almacenarlo temporalmente.
== 0 P$E 2mem3
"altar si es $enor.
"i 1 9 5 &) 9 contenido de la memoria.
"upongamos que ejecuto esta instruccin as+ P$E
=8 inmediatamente despu-s de ejecutar la
instruccin del ejemplo que coloque
en la instruccin =6 al ejecutar P$E =8 se veri4ica
el 8lag
1 y como en este caso se encuentra en 7 Cporque
el n>mero no es menorD entonces no se realiza
dicho "alto a =8 porque el valor de &) no se
modi4ica el programa sigue su ejecucin.
8uncin equivalente en ).
i4 C!/ S memD
I "i necesitas hacer un.
i4 C!/ S9 memD
#nmediatamente despu-s de la instruccin P$E
colocas una
PER
=@ 0 P$! 2mem3
"altar si es $ayor.
"i G 9 7 y 1 9 7 &) 9 contenido de memoria.
"upongamos que ejecuto esta instruccin as+ P$!
6? inmediatamente despu-s de ejecutar la
instruccin del ejemplo que coloque en la
instruccin =6 al ejecutar P$!
6? se veri4ican los 8lag 1 y G y como en este
caso los dos son 7 Cporque el n>mero es menorD
entonces si se realiza dicho "alto a 6? ya que el
valor del &) se modi4ica el programa sigue su
ejecucin saltando a la dir de mem especi4icada.
8uncin equivalente en ).
i4 C!/ T memD
=K 0 P) 2mem3
"altar si el )arry 8lag est activado.
"i ) 9 5 &) 9 contenido de memoria.
=A 0 P1) 2mem3
"altar si el )arry 8lag no est activado.
"i ) 9 7 &) 9 contenido de memoria
=B 0 P( 2mem3
"altar si el (ver4loM 8lag est !ctivado.
"i ( 9 5 &) 9 contenido de memoria
=E 0 P1( 2mem3
"altar si el (ver4loM 8lag no est activado.
"i ( 9 7 &) 9 contenido de memoria
=F 0 P1E 2mem3
"altar si no son iguales.
"i G 9 7 &) 9 contenido de memoria. 8uncin
equivalente en ). i4 C!/ U9 memD
@7 0 ,*T
,ee un valor del Teclado y lo lleva al registro !/
Esta instruccin es para comunicarse con el
usuario pidi-ndole que entre un *atoV &uede
colocar una descripcin del dato que pide que se
mostrar en tiempo de ejecucin.
@5 0 E!&
Escribe en &antalla el contenido del registro !/
Esta instruccin tambi-n es para comunicarse con
el usuarioV
&uede colocar una descripcin del dato que se
entrega este se mostrar en tiempo de ejecucin.
@6 0 $"<
$uestra un mensaje en pantalla Ej. $"< Q;ola
$undoUUW
K7 0 ,*? 2mem3
,a instruccin carga en !/ el contenido de
memoria almacenado en 2mem3 L ?/
ej. *igamos que ?/957 V ,*? 5! carga el
contenido de
5) en !/
K5 0 "T? 2mem3
<uarda el contenido de !/ en la direccin 2mem3
L ?/
ej. *igamos que ?/9575 V "T? =! guarda !/ en
=8
KK 0 ,*8 2mem3
)arga en ?/ y !/ un n>mero de =6 bits C#EEED
que est almacenado en la dir 2mem3 y memL5.
En ?/ quedan los d+gitos ms "igni4icativos Ej.
"upongamos que el n>mero
75777757557757775777777777777777 est
cargado en memoria as+.
76! 7577775755775777 C,os d+gitos ms
signi4icativosD
76? 5777777777777777 C,os d+gitos menos
signi4icativosD
%n ,*8 6! dejar+a el siguiente resultado.
?/. 7577775755775777
!/. 5777777777777777
00000000000000000000000000
1ota. &ara pedirle al usuario o mostrar estos
n>meros #EEE
BK@ en pantalla usar puerto 5 con las
instrucciones #1
!/ 5 y (%T 5!/
KA 0 "T8 2mem3
<uarda en 2mem3 y memL5 el contenido de ?/ y
!/ Ej. siendo !/ y ?/ 9 al ejemplo anterior un
"T8 6! deja la memoria como el ejemplo anterior.
A7 0 !**8 2mem3
"uma n>meros de =6 bits. En ?/ y !/ queda el
resultado de la suma de estos ms el contenido de
2mem3 y memL5
Estos n>meros #EEE BK@ son n>meros que
pueden ser de punto 4lotante o enteros desde 0
65@B@E=A@B hasta
65@B@E=A@B si en cualquier operacin de estas
aritm-ticas
se sobrepasa este valor se activa el (ver4loM 4lag.
A5 0 "%?8 2mem3
'esta el numero de =6 bits. ?/ y !/ 9 ?/ y !/ 0
2mem3 y memL5 &uedes utilizar esta instruccin
como un )$& para n>meros de =6 bits.
A6 0 $%,8 2mem3
$ultiplicacin.
?/ y !/ 9 ?/ y !/ N 2mem3 y memL5 "i el
resultado
es T 65@B@E=A@B 'esultado 9 65@B@E=A@B y
(ver4loM
8lag 9 5
A= 0 *#:8 2mem3
*ivisin.
?/ y !/ 9 ?/ y !/ H 2mem3 y memL5 en )/
queda el residuo de la divisin en entero de 5A bits
A@ 0 #T(8
)onversin de Entero a 'eal.
)onvierte un n>mero entero C5AbitsD almacenado
en !/ al mismo n>mero pero representado en
'eal #EEEBK@
C=6bitsD el 'esultado de la conversin queda en
?/ Cbits ms signi4icativosD y !/
,os registros de control cambian de acuerdo al
n>mero convertido. QGQ si el n>mero es cero Q1Q si
el n>mero es negativo.
AK 0 8T(#
)onversin de 'eal a Entero.
)onvierte un n>mero 'eal C=6bitsD a su
equivalente en entero ?/ y !/ en un entero
C5AbitsD el 'esultado queda en !/.
,os registros de control cambian de acuerdo al
n>mero convertido. QGQ si el n>mero es cero Q1Q si
el n>mero es negativo Q(Q si el n>mero real es
mayor de AKK=K.
E7 0 #1 registro puerto
,leva al 'egistro el valor retornado por el puerto
especi4icado. Ej. #1 !/EV lleva a !/ el valor
retornado por el puerto E C'eloj. los segundos del
sistemaD.
E5 0 (%T puerto registro
Escribe en el puerto especi4icado el valor del
registro.
F7 0 1(&
Esta operacin no hace nada. Xtil para cuando se
modi4ica
la memoria para parchar cdigo y desactivar
instrucciones.
FF 0 ;,T
Terminar &rograma Todo &rograma lleva esta
instruccin para indicarle al simulador que el
programa ha terminado su ejecucin.
)$ *esarrollo de la acti'idad
*isear un programa que permita recibir n>meros
y realizar las cuatro operaciones aritm-ticas
bsicas.
*isee un programa que represente la solucin
matemtica a un problema por ejemplo hallar el
rea el volumen o encontrar la solucin a un
sistema de ecuaciones lineales puede optar por
sistemas bsicos 6J6 =J= o un programa que
halle la solucin a un sistema nJn
Rue es "imu&roc. es un "imulador de un
&rocesador
;ipot-tico en el que se puede aprender las
nociones bsicas para empezar a programar en
lenguaje ensamblador en el cual podemos
observar todo el proceso interno de ejecucin del
programa a trav-s de cada ciclo del procesador.
"imu&roc con su gran variedad de instrucciones
CK7LD es un simulador con el cual tienes in4initas
posibilidades de pruebas.
#ncluye soporte para n>meros de punto 4lotante
usando
#EEE BK@ y enteros desde 06<? hasta 6<?
)omandos utilizados.
$"<. $uestra un mensaje en pantalla.
#1 !/. )argue en !/ el contenido de la direccin
de
$emoria especi4icada.
"T8 C$E$D <uarda en 2mem3 y memL5 el
contenido de
?/ y !/
Ej. siendo !/ y ?/ 9 al ejemplo anterior un "T8
6! deja la memoria como el ejemplo anterior.
!**8 C$E$D. "uma n>meros de =6 bits. En ?/ y
!/ queda el resultado de la suma de estos ms el
contenido de
2mem3 y memL5. Estos n>meros #EEE BK@ son
n>meros que pueden ser de punto 4lotante o
enteros desde 0
65@B@E=A@B hasta 65@B@E=A@B si en cualquier
operacin de estas aritm-ticas se sobrepasa este
valor se activa el
(ver4loM 4lag.
(%T &%E'T( 'E<#"T'(. Escribe en el puerto
especi4icado el valor del registro.
,*8 C$E$D. )arga en ?/ y !/ un n>mero de =6
bits
C#EEED que est almacenado en la dir 2mem3 y
memL5.
En ?/ quedan los d+gitos ms "igni4icativos
Ej. "upongamos que el n>mero
75777757557757775777777777777777 est
cargado en memoria as+.
76! 7577775755775777 C,os d+gitos ms
signi4icativosD
76? 5777777777777777 C,os d+gitos menos
signi4icativosD
%n ,*8 6! dejar+a el siguiente resultado.
?/. 7577775755775777
!/. 5777777777777777
00000000000000000000000000
1ota. &ara pedirle al usuario o mostrar estos
n>meros #EEE
BK@ en pantalla usar puerto 5 con las
instrucciones #1
!/ 5 y (%T 5!/
"%?8 C$E$D. 'esta el numero de =6 bits. ?/ y
!/ 9 ?/
y !/ 0 2mem3 y memL5 &uedes utilizar esta
instruccin como un )$& para n>meros de =6
bits.
$%,8 C$E$D. $ultiplicacin. ?/ y !/ 9 ?/ y !/ N
2mem3 y memL5 "i el resultado es T 65@B@E=A@B
'esultado 9 65@B@E=A@B y (ver4loM 8lag 9 5
*#:8 C$E$D. *ivisin ?/ y !/ 9 ?/ y !/ H 2mem3
y memL5 en )/ queda el residuo de la divisin
en entero de
5A bits
&'(<'!$!. )!,)%,!*('! ?!"#)! E1
,E1<%!PE !""E$?,E'
$"< )!,)%,!*('! ?!"#)!
$"< *#<#TE E, &'#$E' 1X$E'(
#1 !/ 5
"T8 67
$"< *#<#TE E, "E<%1*( 1X$E'(
#1 !/ 5
"T8 66
!**8 67
$"< ,! "%$! *E ,(" 1%$E'(" E"
(%T 5 !/
,*8 67
"%?8 66
$"< ,! 'E"T! E1T'E ,(" *(" 1%$E'("
E"
(%T 5 !/
,*8 67
$%,8 66
$"< ,! $%,T#&,#)!)#(1 *E ,(" *("
1%$E'("
E"
(%T 5 !/
,*8 67
*#:8 66
$"< ,! *#:#"#(1 *E ,(" *(" 1%$E'(" E"
(%T 5 !/
$"< 8#1!, *E, &'(<'!$!
;,T
&!"Y ! &!"( *E, &'(<'!$!
Z)!,)%,!*('!
?!"#)! E1 "#$%&'()W
*iagrama de 4lujo.
&rograma n>meros dos.
*isee un programa que permita representar la
solucin matemtica a un problema por ejemplo
hallar el rea el volumen o encontrar la solucin
a un sistema de ecuaciones lineales puede optar
por sistemas bsicos 6J6 =J= o un programa que
halle la solucin a un sistema nJn.
&'(<'!$!. )!,)%,! E, !'E! *E %1
)%!*'!*(
$"< )!,)%,! E, !'E! *E %1 )%!*'!*(
$"< *#<#TE E, ,!*( *E, )%!*'!*(
#1 !/ 5
"T8 67
$%,8 67
$"< E, !'E! *E, )%!*'!*(" E"
(%T 5 !/
$"< 8#1!, *E, &'(<'!$!
;,T
&!"( ! &!"( *E &'(<'!$! R%E )!,)%,!
E,
!'E! *E %1 )%!*'!*(
+$ #onclusiones
%tilizacin del lenguaje assembler y
programacin en un microprocesador.
!prendizaje del lenguaje de bajo nivel y
similitud con el lenguaje mquina.
&rogramacin bsica de un microprocesador.
,$ Agradecimientos
&or >ltimo agradecer a los administradores del
laboratorio de electrnica y al tutor 1-stor Pavier
'odr+guez por realizar esta prctica.
!e-erencias$
253 ;-ctor %riel :illamil <onzlez C677FD )entro
1acional de
$edios para el !prendizaje. )urso
microprocesadores y
micro0controladores. %niversidad 1acional !bierta
y a
*istancia %1!*.
PUN" 1
PUN" %

You might also like