0% encontró este documento útil (0 votos)
123 vistas6 páginas

Tarea4ensambladores e Interpretes

El documento presenta tres programas escritos en ensamblador para AVR que realizan cálculos aritméticos y lógicos. El primer programa calcula la expresión (76 - 23 + 12) / 4. El segundo programa calcula el promedio de 16 números dados. Y el tercer programa calcula la expresión (200 - 91 - 45 - 23) * 2. Cada programa incluye la captura de pantalla del código compilado correctamente.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
123 vistas6 páginas

Tarea4ensambladores e Interpretes

El documento presenta tres programas escritos en ensamblador para AVR que realizan cálculos aritméticos y lógicos. El primer programa calcula la expresión (76 - 23 + 12) / 4. El segundo programa calcula el promedio de 16 números dados. Y el tercer programa calcula la expresión (200 - 91 - 45 - 23) * 2. Cada programa incluye la captura de pantalla del código compilado correctamente.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 6

ENSAMBLADORES E INTERPRETES.

Alumna: Estefanía Rodríguez Sánchez.

Facilitador: Elsa Viveros Galván.

Carrera: Ingeniería en sistemas computacionales.

Ciclo:10.

Tarea 4: Practica 2. Programas que utilizan


instrucciones aritméticas y lógicas.

Fecha: 5 de noviembre del 2023.


Práctica 2. Programas que utilizan instrucciones aritméticas y lógicas:

Diseña, ensambla y ejecuta los siguientes programas:

2.1.1. Un programa que calcula la siguiente expresión: (76 - 23 + 12) /4.


;
; programa2.1.1.asm
;
; Created: 05/11/2023 7:29:40 PM
; Author : Fanny Rodriguez
;

; Replace with your application code


start:
inc r16 ;incrementa el registro R16
rjmp start ;salto relativo incondicional al inicio

; programa que calcula una expresion prog2.1.1.asm


;--------------------------------------------------------------------------
;prog2.1.1.asm
;--------------------------------------------------------------------------
.NOLIST
;Incluye el programa completo del microcontrolador AVR ATmega168p
;.Include "c:\Archivos del programa\Atmel\AVR Tools\AvrAssembler\Appnotes\
m168pdef.Inc"

.LIST
;salta a la funcion principal del programa
.def temp=r16 ;define al registro temporal r16
.def result=r17 ;define el resultado
rjmp Inicio ;salta al inicio
;
Inicio: ;Inicia el programa
ldi r16, 76 ; carga el valor 76 en R16
ldi r17, 23 ; carga el valor 23 en R17
sub r16, r17 ;resta sin acarreo
ldi r17, 12 ; carga el valor 12 en R17
add r16, r17 ;sumas en acarreo
ldi r17, 4 ; carga el valor 4 en R17
DivLoop:
cp r16, r17 ;carga y compara el valor del dato
brcc Done ;salta si r16 < r17
sub r16, r17 ;resta sin acarreo
inc temp ;incrementa
rjmp DivLoop ; salta de nuevo a la funcion DivLoop
;
Done: ;resultado hecho
mov result,temp ; movimiento del resultado final en R17
;
rjmp Inicio ;salto al inicio del puntero del programa
;

Captura de pantalla del programa copilado correctamente:


2.1.2. Un programa que calcule el promedio de los siguientes 16 números: 3, 7, 10, 11,
28, 14, 23, 37, 9, 3, 10, 45, 20, 6, 8, 5.
;
; 2.1.2 Programa promedio.asm
;
; Created: 05/11/2023 9:59:17 PM
; Author : Fanny Rodriguez
;
;
; programa promedio prog2.1.2.asm
;--------------------------------------------------------------------------
;prog2.1.2.asm
;--------------------------------------------------------------------------
.NOLIST
;Incluye el programa completo del microcontrolador AVR ATmega168p
;.Include "c:\Archivos del programa\Atmel\AVR Tools\AvrAssembler\Appnotes\
m168pdef.Inc"
;
.LIST
;salta a la funcion principal del programa

;
;
.cseg ; Seccion de codigo
;
.org 0x0000 ; Direccion de inicio
;
ldi r16, 0 ; Inicializa un registro (r16) para almacenar la suma
ldi r17, 16 ; Inicializa otro registro (r17) con el número de elementos (16)
;
; Arreglo de los numeros
Numbers:
.db 3, 7, 10, 11, 28, 14, 23, 37, 9, 3, 10, 45, 20, 6, 8, 5
;
;Bucle para realizar la suma de los numeros
SumLoop:
lds r18, Numbers ; Carga el valor del siguiente numero en R18
add r16, r18 ; Suma el numero acumulador

dec r17 ; Decrementa el contador de elementos


brne SumLoop ; Si r17 no es igual a cero, repite el bucle

; se divide la suma por r16 para calcular el promedio (desplazamiento a la derecha)


lsr r16 ; Realiza un desplazamiento a la derecha en r16 (divide por 2)

; El resultado final (el promedio) se encuentra en r16


;
loop:
rjmp loop ; Bucle infinito
;

Captura de pantalla del programa compilado correctamente:

2.1.3 Un programa que calcula la siguiente expresión: (200 - 91 - 45 - 23) *2:


;
; 2.1.3 Programa para calcular.asm
;
; Created: 05/11/2023 11:17:22 PM
; Author : Fanny Rodriguez
;
;
; programa para calcular prog2.1.3.asm
;--------------------------------------------------------------------------
;prog2.1.3.asm
;--------------------------------------------------------------------------
.NOLIST
;Incluye el programa completo del microcontrolador AVR ATmega168p
;.Include "c:\Archivos del programa\Atmel\AVR Tools\AvrAssembler\Appnotes\
m168pdef.Inc"
;
.cseg ; seccion del codigo
.org 0x0000 ; Direccion de inicio

ldi r24, 200 ; Carga el valor 200 en r24


ldi r25, 91 ; Carga el valor 91 en r25
ldi r16, 45 ; Carga el valor 45 en r16
ldi r18, 23 ; Carga el valor 23 en r18

sub r24, r25 ; Resta r25 de r24 (200 - 91)


sub r24, r16 ; Resta r16 de r24 (resultado anterior - 45)
sub r24, r18 ; Resta r18 de r24 (resultado anterior - 23)
lsl r24 ; Multiplica r24 por 2 (desplazamiento a la izquierda)

; El resultado final de la expresion se encuentra en r24


;
loop:
rjmp loop ; Bucle infinito

Captura de pantalla del programa compilado correctamente:


Referencias

Aragón-IEE., P. E. (27 de octubre de 2021). ATmega328 AVR-C Variables, operaciones aritméticas y


lógicas [Vídeo]. YouTube. . Obtenido de https://www.youtube.com/watch?
v=JOWLBpoG7S0

Electronics, A. (13 de octubre de 2022). Microcontroladores AVR para procesamiento de 8 bits de


alto rendimiento y consumo eficiente de energía. Obtenido de
https://www.arrow.com/es-mx/research-and-events/articles/avr-microcontrollers-for-
high-performance-and-p

Escartin, V. M. (2010). Diseño del núcleo de un procesador AVR de 8 bits utilizando lógica
programable. Obtenido de https://doi.org/10.1234/rielac.v29i3.34

También podría gustarte