(103350575) PRACTICA 1

Embed Size (px)

Citation preview

  • 5/20/2018 (103350575) PRACTICA 1

    1/7

    Programacin de computadores con debuggerPractica 1 materia: Microprocesadores y microcontroladores

    SAMUEL QUINE!" #ASASs am uk as as @hotm ail.c om

    Resumen En el desarrollo de la prctica es dedisear un programa en lenguaje de

    programacin assembler, luego un programa ensimuproc, para programar un microprocesadorvirtual.

    1$ Introduccin

    El siguiente Trabajo consiste en el diseo de unprograma utilizando el lenguaje de programacin

    assembler que es el ms cercano al lenguajemquina y adems es un lenguaje de bajo nivelse utiliz la herramienta de simulacin deprogramacin simuproc el cual permite programarun microprocesador virtual y correr programas.

    %$ "b&eti'os

    !plicar el conocimiento general y principios deoperaciones del programa "#$%&'() en elentorno de un escenario.

    !plicar los conceptos !dquiridos en ellenguaje

    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 deprogramacin 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 lainstruccin 2parmetro3 es el parmetro si estatiene o 2parametro5 parametro63 si el parmetroes doble !c pondr- algunos ejemplos Estas sonlas instrucciones soportadas por la versin actual75 0 ,*! 2mem3

    )argue en !/ el contenido de la direccin de$emoria especi4icada. *igamos que en la posicinde memoria 58 est el valor 57555 despu-s deejecutada la instruccin,*! 58 se obtiene que !/957555 Es equivalentea usar la instruccin $(: !/ 58;ay casos donde es mejor usar $(: si se deseapasar datos sin tener que pasarlos por !/.76 0 "T! 2mem3n dato de una direccin de memoria aotra 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 77A 0 &%"; 2registro3Env+a el valor del registro especi4icado a la pila7B 0 &(& 2registro3Trae de la &ila el >ltimo :alor llevado por &%";Cindicado por el registro "&D y lo almacena en elregistro especi4icado.1ota En todas las instrucciones desde 7 hasta la5 *est puede ser una direccin de $emoria o un'egistro 7 0 #1)2dest3

    #ncrementa en 5 el destino especi4icado elparmetro puede ser una direccin de memoria oun registro. "i en la posicin de memoria E? estel 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 eldestino queda 9 7 se vuelve G 9 557 0 $(: 2destorig3)opia el valor almacenado en el origen al destino.El destino yHo origen pueden ser registros odirecciones de memoria o combinacin de estos.&ara copiar lo que est en la posicin de memoria56E a la posicin *6 se usa la instruccin $(:*6 56E

    55 0 !1* 2destorig3I lgico hace un I lgico entre todos los bits delos dosoperndos escribiendo el resultado en el destino.,os parmetros pueden ser direcciones dememoria o 'egistros.,a siguiente regla aplica5 !1* 5 9 55 !1* 7 9 77 !1* 5 9 77 !1* 7 9 7

    mailto:[email protected]:[email protected]
  • 5/20/2018 (103350575) PRACTICA 1

    2/7

    "i en !/ tengo el n>mero 5775575 y en la pos =8tengo el n>mero 55755. !l ejecutar la instruccin

    !1* !/ =8 obtendr- en !/ el resultado 5775. ElI lgico lo que hacees dejar los bits en com>n que tengan los dosn>meros.56 0 1(T 2destino3

    1( lgico invierte los bits del operando 4ormandoel complemento del primero.1(T 5 9 71(T 7 9 5 "i en !/ tengo 57755 al ejecutar 1(T

    !/ obtengo !/955555555555755775= 0 (' 2destorig3( inclusive lgico todo bit activo en cualquiera delos operndoos ser activado en el destino. ,asiguiente regla aplica5 (' 5 9 55 (' 7 9 57 (' 5 9 57 (' 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 losoperndoos y almacena el resultado en destino.,a siguiente regla aplica5 /(' 5 9 75 /(' 7 9 57 /(' 5 9 57 /(' 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 especi4icadasCen decimalD los bits que salen por la izquierda re0

    entran por la*erecha. En el )arry 8lag queda el >ltimo bitrotado."upongamos que en la posicin BE tengo elnumero 575557

    !l Ejecutar... obtengo en BE )9'(, BE 6 57555777 7'(, BE B 5755577777777 7'(, BE 5= 5577777777777575 55A 0 '(' 2destveces3'ota los bits a la derecha las veces especi4icadasCen decimalD los ?its que salen por la derecha re0entran por la izquierda. El )arry 8lag guarda el>ltimo bit rotado.5B 0 ";, 2destveces3*esplaza los bits a la izquierda el n>mero deveces especi4icado Cen decimalD agregando cerosa la derecha el)arry 8lag guarda >ltimo bit desplazado.5 0 ";' 2destveces3*esplaza los bits a la *erecha el n>mero de vecesespeci4icado Cen decimalD agregando ceros a laizquierda el )arry 8lag guarda >ltimo bitdesplazado. "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 767 0 !** 2mem3"umar

    !/ 9 !/ L el contenido de la direccin de

    memoria. "i el resultado de la suma supera los 5Abits el resultado queda as+ en ?/ los bits mssigni4icativos y en ?/ los menos tambi-n seactiva el (ver4loM 4lag.65 0 "%? 2mem3'estar

    !/ 9 !/ 0 el contenido de la direccin dememoria.66 0 $%, 2mem3$ultiplicar

    !/ 9 !/ N el contenido de la direccin dememoria."i el n>mero resultante supera su longitud enbinario de 5A bits este resultado se partealmacenando los bits ms signi4icativos en el

    'egistro ?/. "i el resultado de una operacin4uera 575575777555577757555 C65 bitsD ,osregistros quedar+an as+

    ! 9 5777555577757555 Clos >ltimos 5AbitsD? 9 57557 Clos primeros ?its Clos mssigni4icativosDDTambi-n se activa el 8lag (ver4loM para indicarque en la >ltima operacin sucedi esto.6= 0 *#: 2mem3*ividir

    !/ 9 !/ H el contenido de la direccin dememoria?/9!/ O el contenido de la dir de memoria C?/ 9modulo o residuoD.6@ 0 ),1

    ,impia el 1egative 8lag. 1 9 76K 0 ),),impia el )arry 8lag. ) 9 76A 0 "T)&one el )arry 8lag. ) 9 56B 0 )$))omplementa CinvierteD el )arry 8lag. "i ) 9 5vuelve ) 97 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. 8uncinequivalente en )i4 C!/ 99 memD=6 0 )$& 2mem3)ompara !/ con 2mem3 si !/ es mayor G97197 si es igual G95 197 si es menor G97 195"upongamos que en

  • 5/20/2018 (103350575) PRACTICA 1

    3/7

    !/ tengo el n>mero 57557 y en la posicin dememoria @< tengo el n>mero 5577 al ejecutar lainstruccin )$& @< obtengo que como el numeroalmacenado en !/ es mayor entonces los 8lagsde )ontrol me quedan as+ G97 y 1971ota "olo en las versiones 5.=.A.6 y anteriores En

    !/ quedaba el resultado de la resta Cde la

    comparacinD !hora ya no. "ugerencia sinecesita el valor original de !/ puede usar la pilapara 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 lainstruccin del ejemplo que coloqueen la instruccin =6 al ejecutar P$E =8 se veri4icael 8lag1 y como en este caso se encuentra en 7 Cporqueel n>mero no es menorD entonces no se realizadicho "alto a =8 porque el valor de &) no semodi4ica el programa sigue su ejecucin.

    8uncin equivalente en )i4 C!/ S memDI "i necesitas hacer uni4 C!/ S9 memD#nmediatamente despu-s de la instruccin P$Ecolocas unaPER=@ 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 lainstruccin del ejemplo que coloque en lainstruccin =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 menorDentonces si se realiza dicho "alto a 6? ya que elvalor del &) se modi4ica el programa sigue suejecucin saltando a la dir de mem especi4icada.8uncin equivalente en )i4 C!/ 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= 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. 8uncinequivalente 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 &uedecolocar una descripcin del dato que pide que semostrar en tiempo de ejecucin.@5 0 E!&Escribe en &antalla el contenido del registro !/Esta instruccin tambi-n es para comunicarse conel usuarioV

    &uede colocar una descripcin del dato que seentrega este se mostrar en tiempo de ejecucin.@6 0 $"meros quepueden ser de punto 4lotante o enteros desde 065@B@=A@B hasta65@B@=A@B si en cualquier operacin de estasaritm-ticasse sobrepasa este valor se activa el (ver4loM 4lag.A5 0 "%?8 2mem3'esta el numero de =6 bits ?/ y !/ 9 ?/ y !/ 02mem3 y memL5 &uedes utilizar esta instruccincomo un )$& para n>meros de =6 bits.A6 0 $%,8 2mem3

  • 5/20/2018 (103350575) PRACTICA 1

    4/7

    $ultiplicacin?/ y !/ 9 ?/ y !/ N 2mem3 y memL5 "i elresultadoes 65@B@=A@B 'esultado 9 65@B@=A@B y(ver4loM8lag 9 5A= 0 *#:8 2mem3

    *ivisin?/ y !/ 9 ?/ y !/ H 2mem3 y memL5 en )/queda el residuo de la divisin en entero de 5A bitsA@ 0 #T(8)onversin de Entero a 'eal)onvierte un n>mero entero C5AbitsD almacenadoen !/ 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 aln>mero convertido QGQ si el n>mero es cero Q1Q siel n>mero es negativo.AK 0 8T(#)onversin de 'eal a Entero

    )onvierte un n>mero 'eal C=6bitsD a suequivalente en entero ?/ y !/ en un enteroC5AbitsD el 'esultado queda en !/.,os registros de control cambian de acuerdo aln>mero convertido QGQ si el n>mero es cero Q1Q siel n>mero es negativo Q(Q si el n>mero real esmayor de AKK=K.7 0 #1 registro puerto,leva al 'egistro el valor retornado por el puertoespeci4icado. Ej #1 !/V lleva a !/ el valorretornado por el puerto C'eloj los segundos delsistemaD.5 0 (%T puerto registroEscribe en el puerto especi4icado el valor delregistro.

    F7 0 1(&Esta operacin no hace nada. Xtil para cuando semodi4icala memoria para parchar cdigo y desactivarinstrucciones.FF 0 ;,TTerminar &rograma Todo &rograma lleva estainstruccin para indicarle al simulador que elprograma ha terminado su ejecucin.

    )$ *esarrollo de la acti'idad

    *isear un programa que permita recibir n>merosy realizar las cuatro operaciones aritm-ticas

    bsicas.*isee un programa que represente la solucinmatemtica a un problema por ejemplo hallar elrea el volumen o encontrar la solucin a unsistema de ecuaciones lineales puede optar porsistemas bsicos 6J6 =J= o un programa quehalle la solucin a un sistema nJnRue es "imu&roc es un "imulador de un&rocesador;ipot-tico en el que se puede aprender lasnociones bsicas para empezar a programar en

    lenguaje ensamblador en el cual podemosobservar todo el proceso interno de ejecucin delprograma a trav-s de cada ciclo del procesador."imu&roc con su gran variedad de instruccionesCK7LD es un simulador con el cual tienes in4initasposibilidades de pruebas.#ncluye soporte para n>meros de punto 4lotante

    usando#EEE BK@ y enteros desde 06

  • 5/20/2018 (103350575) PRACTICA 1

    5/7

    *#:8 C$E$D *ivisin ?/ y !/ 9 ?/ y !/ H 2mem3y memL5 en )/ queda el residuo de la divisinen entero de5A bits&'(

  • 5/20/2018 (103350575) PRACTICA 1

    6/7

    PUN" %

  • 5/20/2018 (103350575) PRACTICA 1

    7/7