Practica03 PDF
Practica03 PDF
Practica03 PDF
EN TELECOMUNICACIONES 20/03/2020
Practica 03:
Página
SREG y Operaciones aritméticas y lógicas
1 / 14
I.- OBJETIVOS:
- Analizar el lenguaje ensamblador y operaciones aritmético-lógicas de ATMega328P
- Analizar el registro SREG de ATMega328P
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
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
C: 1 H: 0 C: 0 H: 0
C: 1 H: 0 C: 0 H: 0
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
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
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
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
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
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