0% encontró este documento útil (0 votos)
30 vistas14 páginas

Practica03 PDF

Descargar como doc, pdf o txt
Descargar como doc, pdf o txt
Descargar como doc, pdf o txt
Está en la página 1/ 14

ESCUELA PROFESIONAL DE INGENIERÍA Emisión:

EN TELECOMUNICACIONES 20/03/2020
Practica 03:
Página
SREG y Operaciones aritméticas y lógicas
1 / 14

CURSO: MICROPROCESADOR Y MICROCONTROLADOR


PRACTICA N° 03: SREG y Operaciones aritméticas y lógicas

Alumno(os): Grupal Individual Total


1. Chavez Nolasco Edisson John x
2.Chancuaña Carrillo Daivid x
3.Hancco Rivera Salvador x
4.Peralta Apaza Elvis Juan x
Grupo:  5
Docente: Mg. HUARCA Jorge
Semestre: 7
Fecha de
 3/05/2021  Hora:  
entrega:

I.- OBJETIVOS:
- Analizar el lenguaje ensamblador y operaciones aritmético-lógicas de ATMega328P
- Analizar el registro SREG de ATMega328P

II.- CONOCIMIENTOS TEÓRICOS PREVIOS:


Temas a desarrollar:
- Registro de estado (SREG) nomenclatura y descripción.

El bit de habilitación de las interrupciones globales debe estar en uno para habilitar las interrupciones. La
interrupción individual permite que el control sea llevado a cabo en registros de control distintos. Si el
registro de Habilitación de interrupciones globales es borrado, ninguna de las interrupciones está activadas
independiente de la configuración de una interrupción individual. El bit I es limpiado por hardware después
de que una interrupción ha ocurrido, y es puesto en uno por la instrucción de RETI para habilitar
interrupciones siguientes. El bit I también puede ser puesto en uno y borrado por la aplicación con las
instrucciones SEI y CLI.
Bit 6 – T: Bit Copia de almacenamiento
El bit de instrucción de copia BLD (cargar bit) y BST (almacenar bit) usa el bit T como una fuente o destino
para la operación del bit. Un bit desde un registro en el Archivo de Registro puede ser copiados en el bit T
mediante la instrucción SBT y un bit en T puede ser copiado dentro de un bit en un registro en el Archivo de
registros mediante la instrucción BLD.
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
EN TELECOMUNICACIONES 20/03/2020
Practica 03:
Página
SREG y Operaciones aritméticas y lógicas
2 / 14

Bit 5 – H: Half Carry Flag


Half Carry es útil en la aritmética BCD.
• Bit 4 – S: Bit de Signo, S = N ⊕ V
El Bit S es una OR exclusiva entre la bandera negativa N y la bandera de
desbordamiento V en Complemento a Dos.
• Bit 3 – V: Bandera de Desbordamiento V en Complemento a Dos
La bandera de desbordamiento en Complemento a Dos soporta el
complemento a dos.
• Bit 2 – N: Bandera Negativa
La Bandera Negativa N indica un resultado negativo en una operación
aritmética o lógica.
• Bit 1 – Z: Bandera del Cero
La bandera del cero indica si un resultado es cero en una operación aritmética
o lógica.
• Bit 0 – C: Bandera de Acarreo
El Bit C indica la existencia de acarreo en una operación aritmética o lógica.
- Complemento a uno y complemento a dos
• Complemento a 1:
Es una operación aritmética que se usa frecuentemente para representar los números negativos. En binario se
obtiene cambiando los unos por los ceros y los ceros por los unos. Se diferencia la escritura de un numero
entero positivo de un negativo de la siguiente forma:
Si el numero es positivo se representa su magnitud con n-1 bits, y se añade en 0 a la izquierda: Magnitud (n-1
bits)
Si el numero es negativo se representa su equivalente positivo, utilizando n-1 bits para la magnitud y
añadiendo un 0 a la izquierda, tal y como se explicó anteriormente, pero al final realizamos el cambio de
ceros por unos y unos por ceros: Ca1 (Magnitud (n-1bits)).
Es importante tomar en cuenta que al realizar la representación en complemento a 1, el primer bit que se
encuentra a la izquierda indica el signo del número, y se lo llama bit de signo.
• Complemento a 2:
El complemento es por lo general la forma más usada en computación para representar un numero entero
negativo. Si se trata de un numero positivo simplemente se añaden ceros a la izquierda del numero binario
para completar los espacios de acuerdo al número total de bits; en cambio, el procedimiento para un numero
negativo es primero obtener el complemento a 1 de ese número y sumarle un uno mediante la suma binaria.
Cabe mencionar que al igual que el complemento a 1 el primer bit de la izquierda (bit de signo) nos indican
si el número es positivo o negativo: 0 si es positivo y 1 si es negativo. Una forma más fácil de proceder a
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
EN TELECOMUNICACIONES 20/03/2020
Practica 03:
Página
SREG y Operaciones aritméticas y lógicas
3 / 14

convertir el binario en complemento a 2 es: encontrar el primer “1” partiendo de derecha a izquierda e
invertir todos los ceros y los unos que se encuentren a su izquierda.
- Lectura de las instrucciones aritméticas y lógicas en ensamblador

III.- PAUTAS PARA EL DESARROLLO:


3.1. Creación de un proyecto de desarrollo
Cree un proyecto de desarrollo para el microcontrolador ATMega328P considerando la utilización de código
ensamblador.

3.2. Registro SREG


3.2.1. Indique el valor de los flags C y H del registro SREG para los siguientes casos.
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
EN TELECOMUNICACIONES 20/03/2020
Practica 03:
Página
SREG y Operaciones aritméticas y lógicas
4 / 14

C: 1 H: 0 C: 0 H: 0

C: 1 H: 0 C: 0 H: 0

3.3. Adición de datos


3.3.1. Escriba un programa para para sumar los números 0b10001000, 127 y 0xF0 utilizando la instrucción ADD y
luego con la instrucción ADC. Use el simulador para verificar el registro SREG. ¿Cuál es la diferencia con las dos
sumas?
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
EN TELECOMUNICACIONES 20/03/2020
Practica 03:
Página
SREG y Operaciones aritméticas y lógicas
5 / 14

3.3.2. En la siguiente línea de código, porque no compila el simulador, arregle los posibles errores para ejecutar dicha
instrucción.
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
EN TELECOMUNICACIONES 20/03/2020
Practica 03:
Página
SREG y Operaciones aritméticas y lógicas
6 / 14

no compila ya que el registro de K está en un rango de, 0 ≤ K ≤ 63, y el número aque se


quiere registrar es 101.

3.4. Sustracción de datos


3.4.1. Ingrese el siguiente código en el simulador, analice el SREG para identificar los flags que sufren cambios al
ejecutar la instrucción SUB.
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
EN TELECOMUNICACIONES 20/03/2020
Practica 03:
Página
SREG y Operaciones aritméticas y lógicas
7 / 14
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
EN TELECOMUNICACIONES 20/03/2020
Practica 03:
Página
SREG y Operaciones aritméticas y lógicas
8 / 14

En el presente ejemplo se puede observar el uso de la instrucción SUB, Para lo cual cargamos una constante
directa mediante con la instrucción LDI, donde se cargará los valores hexadecimales 0x20 al registro 20 y
0x15 al registro 21, luego de cargar los valores hexadecimales se procede a realizar una sustracción sin carry
mediante la instrucción SUB, La instrucción SUB su función es el de restar dos registros y dejar el resultado
en el registro destino Rd, todo este procedimiento se puede visualizar en avr CPU register del software
proteus
3.4.2. ¿Qué diferencia existe si utilizamos la instrucción SBC en lugar de SUB en el ítem 3.3.1.? ¿Por qué?

La diferencia principal entre las dos instrucciones SBC y SUB es que la instrucción SUB es la resta de de
dos registros mientras que la instrucción SBC es la resta de dos registros y resta el flag C, y deja el resultado
en el registro destino Rd.
Instrucción: SBC Función: Resta de dos registros con Carry Sintaxis: SBC Rd, Rr.

Operación: Rd←Rd - Rr - C
Operandos: 0 ≤ d ≤31, 0 ≤ r ≤ 31
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
EN TELECOMUNICACIONES 20/03/2020
Practica 03:
Página
SREG y Operaciones aritméticas y lógicas
9 / 14

Words: 1 (2 bytes)
Ciclos: 1
Flags: Z, C, N, V, H
Program Counter: PC← PC + 1
Descripción: SBC resta dos registros y resta el flag C, y deja el resultado en el registro destino Rd.
H: Estará a set (uno) si había un carry negativo (Borrow) del bit 3, de lo contrario se borrará (cero). V:
Estará a set si ocurre un desbordamiento del complemento a dos como resultado de la operación, de lo
contrario se borrará. N: Estará a set si el bit MSB del resultado está a set, de lo contrario se borrará. Z: El
valor anterior permanece sin cambio cuando el resultado es cero, de lo contrario se borrará. C: Estará a set si
el valor absoluto del contenido de Rr + el carry previo es mayor que el valor absoluto de Rd, de lo contrario
se borrará.
Instrucción: SUB Función: Resta de dos registros sin Carry Sintaxis: SUB Rd, Rr.
H: Estará a set (uno) si había un carry negativo (Borrow) del bit 3, de lo contrario se borrará (cero).
V: Estará a set si ocurre un desbordamiento del complemento a dos como resultado de la operación, de lo
contrario se borrará.
N: Estará a set si el bit MSB del resultado está a set, de lo contrario se borrará.
Z: Estará a set si el resultado es $00, de lo contrario se borrará.
C: Estará a set si el valor absoluto del contenido de Rr es mayor que el valor absoluto de Rd, de lo contrario
se borrará.

3.4.3. Escriba un ejemplo en el que se pueda apreciar la diferencia entre la instrucción SUBI y SBCI.
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
EN TELECOMUNICACIONES 20/03/2020
Practica 03:
Página
SREG y Operaciones aritméticas y lógicas
10 / 14

La instrucción SUBI, es una resta inmediata, tomara el valor de la constate 12 y lo


restara al valor del registro 16.
En la instrucción SBCI, tendra la misma funcion de resta, solo que tomara en cuenta el
valor carry.

3.5. Operaciones lógicas


3.5.1. Escriba un programa para cargar valores en las posiciones de memoria de la siguiente manera,

Posición de memoria Valor


0x101 0b10101100
0x102 0b10011001
0x103 El nible bajo de la posición 0x101 (0b00001100)
0x104 El nible alto de la posición 0x101 (0b10100000)
0x105 El resultado OR de las posiciones 0x101 y 0x102
0x106 El resultado XOR de las posiciones 0x101 y 0x102
0x107 El complemento a uno de la posición 0x101
0x108 El complemento a dos de la posición 0x102

Utilice las instrucciones lógicas para realizar el ítem 3.5.1


ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
EN TELECOMUNICACIONES 20/03/2020
Practica 03:
Página
SREG y Operaciones aritméticas y lógicas
11 / 14

ldi r16,0b10101100
sts 0x101,r16
ldi r17,0b10011001
sts 0x102,r17
OR r16,r17
mov r18,r16
sts 0x105,r18

EOR r16,r17
mov r19,r16
sts 0x106,r19

COM r16
mov r20,r16
sts 0x107,r20

NEG r17
mov r21,r17
sts 0x108,r21

Código del programa del ítem 3.5.1.

3.6. Operaciones Multiplicación


3.6.1. Escriba un programa para realizar la multiplicación mediante la instrucción MUL, de los números 20 y 25, el
resultado se almacena en los registros R10 y R11
ldi r16,0x20;
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
EN TELECOMUNICACIONES 20/03/2020
Practica 03:
Página
SREG y Operaciones aritméticas y lógicas
12 / 14

ldi r17,0x25;
mul r17,r16
mov r10,r0
mov r11, r1
clr r17
clr r16
clr r0
clr r1
nop
nop

3.6.2. Escriba un programa para realizar la multiplicación con signo mediante la instrucción MULS, de los números
18 y -37, el resultado se almacena en los registros R12 y R13

LDI R20, 0b1101_1010


ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
EN TELECOMUNICACIONES 20/03/2020
Practica 03:
Página
SREG y Operaciones aritméticas y lógicas
13 / 14

LDI R21, 0B0001_0010


MULS R20,R21
MOVW R12,R0

Código de los ítems 3.6.1. y 3.6.2.

VI.- OBSERVACIONES Y CONCLUSIONES:

Dar sus observaciones y conclusiones de forma personal, en forma clara y empleando el menor número de palabras.
Observaciones
 Podemos observar que al usar el comando ADD tenemos un cambio en el registro de estado
 Al sumar números mayores podemos visualizar que se generan un numero de acareo de un bit el cual
también es tomado como respuesta al resultado de la suma. Cuando se usa el código de suma ADC.
 El uso de comandos para operaciones aritméticas varía los flags y los cuales tenemos que
interpretarlo según la información en el manual de programación.
 El uso de ciertos comandos como el sub y sbc se debe tener en cuenta ya que la diferencia es que el
primero es sin carry y el segundo es con carry

Conclusiones (dos conclusiones por integrante las más importantes de las experiencias propuestas)
 Para sumar números podemos hacerlo de 2 formas usando el código ADD y el código ADC los
cuales nos proporcionara la suma en números vinarios los cuales serán guardados en el registro que
se determina.
 Con los diversos códigos podemos sumar, restar también podemos usar operadores matemáticos,
siempre respetando las reglas y también respetando os registros de fuente y de almacén. Como exor,
complemento etc.
 Las instrucciones que usamos son una herramienta para el buen funcionamiento y el guardado de los
registros para su desarrollo.
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
EN TELECOMUNICACIONES 20/03/2020
Practica 03:
Página
SREG y Operaciones aritméticas y lógicas
14 / 14

 La diferencia ente la suma de ADC Y ADD ES mínima ya que ambas suman y cumplen la misma
función, ambas son por el contenido de la bandera C.
 Las instrucciones SUB y SBC tienen las funciones de sustracción de dos registros ya declarados
solo que el primero es una instrucción sin carry y la segunda es una instrucción con carry.
 Los registros SUBI y SBCI son registros que tiene la función de restar un registro con una constante
y la diferencia entre estas dos instrucciones es que la primera es sin caray y la segunda es una
instrucción con carry.
 Las funciones pueden ser calculadas fácilmente por el pic.
 Las palabras claves conocidas como palabras reservadas en un lenguaje de programación vienen
hacer palabras nemotécnicas como por ejemplo eor(hace referencia a exclusive or)

Rubrica: Practica 03
previosConocimientos

Porcentaje %
Total
Conclusiones Observaciones

Desarrollo de experiencias Preguntas individual

3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10

2 1 1 2 3 3 - - - - - 2 6 20 20

Mg. HUARCA Jorge


Docente DAIE

También podría gustarte