You are on page 1of 4

ESCUELA POLITÉCNICA NACIONAL

LABORATORIO DE SISTEMAS MICROPROCESADOS


INFORME-PRÁCTICA N° 3
NOMBRE: Hansel Lara GRUPO: GR2-1
1. TEMA
CONOCIMIENTO DEL SOFTWARE MICROCHIP STUDIO
2. OBJETIVOS
Conocer una de las herramientas existentes para el desarrollo y depuración de programas para
aplicaciones con microcontroladores de 8 bits de Atmel, específicamente Microchip Studio.
3. INFORME
3.1. Con el archivo .text llamado división para el informe, realizar las siguientes divisiones.
3.1.1 La división 16/4
El código comienza con la siguiente imagen:

Se observa que el dividendo (16) y el divisor (4) se cargan el los registros 16 y 17 respectivamente
estos números se guardarán en formato hexadecimal como se muestra a continuación:

Donde 0x10 equivale 16 y 0x04 a 4 en decimal


Luego

Se inicializa un contador con 9 iteraciones para poder realizar los desplazamientos para resolver la
división
Se observa que comienza la división comenzó la instrucción “rol” desplaza a la izquierda cada bit y
el contador decrementa como se muestra a continuación, cabe mencionar que dado que se desplazó
los bits a la izquierda el resultado en el dividendo será 32 en decimal y en hexadecimal será 20 y el
contador disminuirá a 8 como se muestra

Dado que la bandera “z” se encontró en cero, el programa pasa a las instrucciones de la subrutina
división 2

En cada ciclo, se decrementará el contador, dando 8 iteraciones, una para cada bit en el dividendo. La
subrutina división 1 volverá cuando llegue a cero.
A continuación, el bit más significativo del divisor se desplaza al bit menos significativo del resto. Se
verifica si el divisor entra en el resto usando la subinstrucción “sub”. Se resta el divisor de este valor,
y si es negativo se comprueba por la instrucción brcc.
Esto se repetirá hasta terminar el número de iteraciones eso si limpiando el carry y proceder con el
desplazamiento, se vuelve a repetir el bucle con la instrucción rjmp división.
Una vez terminada las iteraciones el programa ejecutará la subrutina división 3, en esta subrutina ya
no se necesita restaurar el resto si es que el divisor entra en el pero se necesita que se salte a la
subrutina división 1 para terminar el numero de iteraciones y por ultimo se obtiene el resultado
(cociente) en el registro 16 y el residuo en el registro 15, aparte se mueve el valor del registro 16 al
registro 19 para una mejor visualización esto se muestra en la siguiente imagen.

Una vez terminadas las iteraciones se mostrará en el registro 16 y 19 (cociente) el número 4 en


hexadecimal y registro 15 se mostrará el resto el cual es 0 como se muestra en la siguiente imagen.

3.1.2 La división 2/5


El código es el siguiente:
La explicación es la misma que en la división de 16/4 se tomará en cuenta las mismas condiciones de
código se debe tomar en cuenta el residuo y si el divisor entra en este y sobre todo considerar los
acarreos el resultado al terminar las iteraciones será en el registro 16 y 19 (cociente) el número 0 en
hexadecimal y registro 15 se mostrará el resto el cual es 2 como se muestra en la siguiente imagen.

3.1.3 La división 25/6

La explicación es la misma que en la división de 16/4 se tomará en cuenta las mismas condiciones de
código se debe tomar en cuenta el residuo y si el divisor entra en este y sobre todo considerar los
acarreos el resultado al terminar las iteraciones será en el registro 16 y 19 (cociente) el número 4 en
hexadecimal y registro 15 se mostrará el resto el cual es 1 como se muestra en la siguiente imagen.

3.2 Conclusiones y Recomendaciones.


3.2.1 Conclusiones

• Las instrucciones LDI es muy importante dado que es está la que nos permite guarda un valor
en un registro, está instrucción trabaja con los registros de propósito general como se pudo
observar en el desarrollo de la practica como lo son los registros 15,16,17 entre otros hasta el
registro 31.
• Como se observó Microchip Studio no tiene instrucciones para la división de dos números
de n bits por lo que es necesario de subrutinas que se componen de instrucciones del AVR
Assembly y en base de estas generar un código que nos permita realizar la división
• El ambiente de Microchip Studio es muy versátil, ayuda a visualizar el processor status y
nos muestra que valores se van actualizado en los registros en base a estos podemos observar
que parte en el código se está llevando correctamente y cual no.
3.2.2. Recomendaciones.

• Aprenderse todas las instrucciones que se ocupan en el ambiente de Microchip Studio es casi
imposible al menos que se tenga una mente increíble, por tal motivo es sumamente importante
tener el set de instrucciones a la mano esto ayudará de mejor manera al desarrollo correcto
del código.
• En el código provisto para la realización del informe se observó que cada linea de código
tenia asociado un comentario de cual era la función de dicha linea de código, por tal motivo
es recomendable tener una correcta estructura en la construcción del código e incluir
comentarios, esto ayudará a una mejor interpretación.
Referencias:
[1]. Atmel, “AVR Instruction Set”, [En línea], Disponible en:
http://ww1.microchip.com/downloads/en/devicedoc/atmel-0856-avr-instruction-set-manual.pdf,
[Ultimo acceso: 09/06/2022]

You might also like