Está en la página 1de 18

SISTEMAS MICROPROCESADOS: Ejercicios para crear tablas de datos en la FLASH Pgina 1

EJERCICIO PARA LLENAR LOCALIDADES DE LA SRAM, MEDIANTE TABLAS QUE SE CREAN EN LA MEMORIA DEL PROGRAMA
ENUNCIADO: Desarrollar un programa que permita llenar las primeras localidades de la SRAM con los cdigos ASCII correspondiente a las letras del siguiente texto: ESCUELA POLITECNICA NACIONAL

Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redes de Informacin

SISTEMAS MICROPROCESADOS: Ejercicios para crear tablas de datos en la FLASH Pgina 2

PRIMERA SOLUCIN
Esta solucin implica que el programa genere los cdigos ASCII del texto, mediante el direccionamiento inmediato y luego almacene en la SRAM mediante direccionamiento indirecto con post incremento. Para implementar el programa, el Puntero X (registros R26 y R27) es inicializado con la primera direccin de la SRAM, a la que se la etiqueta como DATOS. Y el registro R16 se lo utiliza para generar los cdigos, al que se lo etiqueta como AUX. .NOLIST .INCLUDE m164pdef.inc .LIST ; .EQU NCOD = 28 .DEF AUX = R16 ; .DSEG DATOS: .BYTE ; .CSEG LDI LDI LDI ST LDI ST LDI ST LDI ST LDI ST LDI ST LDI ST LDI ST LDI ST LDI ST LDI ST LDI ST LDI ST LDI ST

NCOD XL,LOW(DATOS) XH,HIGH(DATOS) AUX,'E' X+,AUX AUX,'S' X+,AUX AUX,'C' X+,AUX AUX,'U' X+,AUX AUX,'E' X+,AUX AUX,'L' X+,AUX AUX,'A' X+,AUX AUX,' ' X+,AUX AUX,'P' X+,AUX AUX,'O' X+,AUX AUX,'L' X+,AUX AUX,'I' X+,AUX AUX,'T' X+,AUX AUX,'E' X+,AUX

Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redes de Informacin

SISTEMAS MICROPROCESADOS: Ejercicios para crear tablas de datos en la FLASH Pgina 3

LDI ST LDI ST LDI ST LDI ST LDI ST LDI ST LDI ST LDI ST LDI ST LDI ST LDI ST LDI ST LDI ST LDI ST ; FIN: ; .EXIT RJMP

AUX,'C' X+,AUX AUX,'N' X+,AUX AUX,'I' X+,AUX AUX,'C' X+,AUX AUX,'A' X+,AUX AUX,' ' X+,AUX AUX,'N' X+,AUX AUX,'A' X+,AUX AUX,'C' X+,AUX AUX,'I' X+,AUX AUX,'O' X+,AUX AUX,'N' X+,AUX AUX,'A' X+,AUX AUX,'L' X+,AUX FIN

; FIN DEL MODULO FUENTE

VENTANA DE LA MEMORIA DESPUS DE LA EJECUCIN DEL PROGRAMA EN EL SIMULADOR

28 Localidades que se llenan

Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redes de Informacin

SISTEMAS MICROPROCESADOS: Ejercicios para crear tablas de datos en la FLASH Pgina 4

SEGUNDA SOLUCIN
Como se puede apreciar la primera solucin no es una solucin eficiente. Lo que lleva al desarrollo de la segunda solucin, que consiste en un lazo de repeticin donde el programa no es el que genera los cdigos, sino que los lee desde la memoria del programa y los almacena en la SRAM. Al implementar el algoritmo de esta solucin, se utiliza al Puntero X para almacenar los cdigos en la SRAM y al Puntero Z (registros R30 y R31) para leerlos desde la memoria del programa. La inicializacin de este ltimo puntero debe considerar que los contenidos de la memoria del programa son de 16 bits, es decir que contienen dos cdigos en cada localidad, uno en el byte par y otro en el bytes impar. El registro R16 se lo utiliza para la transferencia del cdigo ASCII de la memoria del programa hacia la SRAM y R17 es el contador para controlar el lazo de repeticin; es por eso, que se los etiqueta como AUX y CONTADOR.

Byte Impar

Byte Par

La tabla de cdigos ASCII se crea en la memoria del programa utilizando en el Mdulo Fuente la Directiva .DB que Define Bytes Constantes que ocupan localidades de la
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redes de Informacin

SISTEMAS MICROPROCESADOS: Ejercicios para crear tablas de datos en la FLASH Pgina 5

FLASH o de la EEPROM. Adems, a la primera lnea de estas directivas se la etiqueta para que el Assembler la utilice como la direccin de inicio de la tabla cuando inicialice el Puntero Z. .NOLIST .INCLUDE m164pdef.inc .LIST ; .EQU NCOD = 28 .DEF AUX = R16 .DEF CONTADOR = R17 ; .DSEG DATOS: .BYTE NCOD ; .CSEG LDI XL,LOW(DATOS) LDI XH,HIGH(DATOS) LDI ZL,LOW(TABLA<<1) LDI ZH,HIGH(TABLA<<1) LDI CONTADOR,NCOD LAZO: LPM AUX,Z+ ST X+,AUX DEC CONTADOR BRNE LAZO ; FIN: RJMP FIN ; .ORG $50 TABLA: .DB 0x45 .DB 0x53 .DB 0x43 .DB 0x55 .DB 0x45 .DB 0x4C .DB 0x41 .DB 0x20 .DB 0x51 .DB 0x4F .DB 0x4C .DB 0x49 .DB 0x54 .DB 0x45 .DB 0x43 .DB 0x4E .DB 0x49 .DB 0x43 .DB 0x41 .DB 0x20 .DB 0x4E .DB 0x41
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redes de Informacin

SISTEMAS MICROPROCESADOS: Ejercicios para crear tablas de datos en la FLASH Pgina 6

.DB .DB .DB .DB .DB .DB ; .EXIT

0x43 0x49 0x4F 0x4E 0x41 0x4C

; FIN DEL MODULO FUENTE

Para inicializar el Puntero Z se utilizan las instrucciones: LDI LDI ZL,LOW(TABLA<<1) ZH,HIGH(TABLA<<1)

Donde los smbolos <<1, corresponde al operador de desplazamiento binario de una posicin, hacia la izquierda. Esta forma de iniciar al Puntero Z se justifica por lo siguiente: Las instrucciones para leer desde la memoria del programa son LPM (Load Program Memory), en las que la direccin del operando de origen en forma explcita o implcita es el contenido del Puntero Z. Los contenidos de la memoria de programa son de una palabra, 16 bits o 2 bytes, el byte par y el impar; es decir que, para leer se necesita ejecutar 2 instrucciones LPM. El Puntero Z contiene la direccin de la localidad de la FLASH y un indicador para establecer si la lectura es del byte par (0) o del byte impar (1). El indicador del byte que se lee, es el bit menos significativo del Puntero Z. La primera lectura dentro del lazo de repeticin corresponde al byte par de localidad inicial de la tabla.

Por lo tanto, el valor del Puntero Z (ZH y ZL) antes de ingresar en el lazo de repeticin es igual al valor de la etiqueta TABLA desplazado una posicin a la izquierda. Tambin se suele utilizar las siguientes instrucciones con el operador de multiplicacin, que tienen el mismo efecto anterior: LDI LDI ZL,LOW(TABLA*2) ZH,HIGH(TABLA*2)

Para el presente ejemplo, con el valor de la etiqueta TABLA igual a $0050, el valor inicial del Puntero Z ser $00A0. $0050 = 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 Un desplazamiento a la izquierda. $00A0 = 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0

Direccin de la FLASH

Para Byte Par

Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redes de Informacin

SISTEMAS MICROPROCESADOS: Ejercicios para crear tablas de datos en la FLASH Pgina 7

Finalmente, el resultado del ensamblado no tiene errores, por lo que si se crea el Mdulo Objeto; pero existen 28 mensajes de advertencia (WARNING) en las 28 lneas DB que crean la tabla de datos en la FLASH y que pueden influenciar en el mal funcionamiento del programa. Precisamente ese es el caso, el programa no cumple lo solicitado. VENTANA DE LA MEMORIA DESPUS DE LA EJECUCIN DE LA SEGUNDA SOLUCIN QUE NO CUMPLE CON LO SOLICITADO

28 Localidades llenas

No es lo solicitado

Uno de los mensajes de advertencia, similar a los restantes, dice:


C:\Users\JVelarde\Documents\ATmega\AVRStudio\Tablas\Tabla02\Tabla02.as m(26): warning: .cseg .db misalignment - padding zero byte 000050 0045 TABLA: .DB 0x45

Esto significa que con la Directiva DB al crear el byte de la constante lo rellena con un byte de ceros, para no perder el alineamiento de palabras que tiene la memoria de programa. Es decir, que no solo se han creado los 28 bytes de los cdigos ASCII sino 28 palabras con los cdigos ASCII acompaados de un byte de ceros; tal como se observa en la ventana de la memoria del programa del simulador.

Cdigo de Mquina del Programa

Tabla de 28 palabras
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redes de Informacin

SISTEMAS MICROPROCESADOS: Ejercicios para crear tablas de datos en la FLASH Pgina 8

Grficamente la tabla que se ha creado es:


Byte Impar Byte Par

Para solucionar este inconveniente, es necesario incluir dentro del lazo de repeticin, un incremento adicional del Puntero Z mediante la ejecucin de la lectura del byte impar que no se almacena, como se indica a continuacin: Lectura del byte par LAZO: LPM AUX,Z+ ST X+,AUX LPM AUX,Z+ Lectura del byte impar DEC CONTADOR BRNE LAZO
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redes de Informacin

SISTEMAS MICROPROCESADOS: Ejercicios para crear tablas de datos en la FLASH Pgina 9

TERCERA SOLUCIN
Para no desperdiciar espacios de memoria de programa al crear tablas, se utiliza la Directiva .DW que Define Word o Palabras Constantes que ocupan localidades de la Memoria del Programa o de la EEPROM, quedando la codificacin de la siguiente forma: .NOLIST .INCLUDE m164pdef.inc .LIST ; .EQU NCOD = 28 .DEF AUX = R16 .DEF CONTADOR = R17 ; .DSEG DATOS: .BYTE NCOD ; .CSEG LDI XL,LOW(DATOS) LDI XH,HIGH(DATOS) LDI ZL,LOW(TABLA<<1) LDI ZH,HIGH(TABLA<<1) LDI CONTADOR,NCOD LAZO: LPM AUX,Z+ ST X+,AUX DEC CONTADOR BRNE LAZO ; FIN: RJMP FIN ; .ORG $50 TABLA: .DW 0x4553 .DW 0x4355 .DW 0x454C .DW 0x4120 .DW 0x514F .DW 0x4C49 .DW 0x5445 .DW 0x434E .DW 0x4943 .DW 0x4120 .DW 0x4E41 .DW 0x4349 .DW 0x4F4E .DW 0x414C ; .EXIT ; FIN DEL MODULO FUENTE El ensamblado de este Mdulo Fuente no tiene mensajes de advertencia ni de errores, pero no resuelve el problema. Porque en el lazo de repeticin se lee primero el byte par
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redes de Informacin

SISTEMAS MICROPROCESADOS: Ejercicios para crear tablas de datos en la FLASH Pgina 10

y luego el impar; es decir primero se lee el cdigo ASCII de la S y luego el de la E y as sucesivamente. VENTANA DE LA MEMORIA DESPUS DE LA EJECUCIN DE LA TERCERA SOLUCIN QUE NO CUMPLE CON LO SOLICITADO

La solucin ser intercambiar los bytes en las palabras, como se muestra a continuacin: TABLA: .DW .DW .DW .DW .DW .DW .DW .DW .DW .DW .DW .DW .DW .DW 0x5345 0x5543 0x4C45 0x2041 0x4F51 0x494C 0x4554 0x4E43 0x4349 0x2041 0x414E 0x4943 0x4E4F 0x4C41

Tambin se puede crear la tabla con menos lneas de cdigo, separando las constantes por comas. TABLA: .DW .DW .DW 0x5345, 0x5543, 0x4C45, 0x2041 0x4F51, 0x494C, 0x4554, 0x4E43, 0x4349, 0x2041 0x414E, 0x4943, 0x4E4F, 0x4C41

Regresando a la segunda solucin, la creacin de la tabla se puede apreciar en forma ms explcita si se usa los mismos smbolos ASCII entre comillas. TABLA: .DB .DB .DB .DB .DB .DB .DB E S C U E L A

Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redes de Informacin

SISTEMAS MICROPROCESADOS: Ejercicios para crear tablas de datos en la FLASH Pgina 11

.DB .DB .DB .DB .DB .DB .DB .DB .DB .DB .DB .DB .DB .DB .DB .DB .DB .DB .DB .DB .DB

P O L I T E C N I C A N A C I O N A L

Pero, se mantienen los mensajes de advertencia ya analizados. Tambin se puede disminuir el nmero de lneas para crear la tabla, donde se mantienen los mensajes de advertencia en las dos primeras de esas lneas y se elimina en la ltima. Esto se debe, a que la ltima tiene un nmero par de constantes y las otras no. TABLA: .DB .DB .DB
E, S, C, U, E, L, A , P, O, L, I, T, E, C, N, I, C, A, N, A, C, I, O, N, A, L

00000a 5345 00000b 5543 00000c 4c45 C:\Users\JVelarde\Documents\ATmega\AVRStudio\Tablas\Tabla07\Tabla07.as m(25): warning: .cseg .db misalignment - padding zero byte 00000d 0041 TABLA: .DB "E","S","C","U","E","L","A" 00000e 5020 00000f 4c4f 000010 5449 000011 4345 000012 494e 000013 4143 C:\Users\JVelarde\Documents\ATmega\AVRStudio\Tablas\Tabla07\Tabla07.as m(26): warning: .cseg .db misalignment - padding zero byte 000014 0020 .DB " ","P","O","L","I","T","E","C","N","I","C","A"," " 000015 414e 000016 4943 000017 4e4f 000018 4c41 .DB "N","A","C","I","O","N","A","L"

Por eso, se debe tener cuidado de crear tablas de bytes en un nmero par de constantes, para evitar que se rellenen con bytes de ceros debido al alineamiento.

Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redes de Informacin

SISTEMAS MICROPROCESADOS: Ejercicios para crear tablas de datos en la FLASH Pgina 12

TABLA:

.DB .DB .DB

E, S, C, U, E, L, A, P, O, L, I, T, E, C, N, I, C, A, N, A, C, I, O, N, A, L

Tambin se puede agrupar los caracteres dentro de las comillas y mejorar la presentacin. TABLA: .DB .DB .DB ESCUELA POLITECNICA NACIONAL

00000a 00000b 00000c 00000d 00000e 00000f 000010 000011 000012 000013 000014 000015 000016 000017

5345 5543 4c45 2041 4f50 494c 4554 4e43 4349 2041 414e 4943 4e4f 4c41

TABLA: .DB

"ESCUELA "

.DB

"POLITECNICA "

.DB

"NACIONAL"

Por ltimo, para este caso se puede tener una solo lnea con la que se crea toda la tabla. TABLA:
00000a 00000b 00000c 00000d 00000e 00000f 000010 000011 000012 000013 000014 000015 000016 000017 5345 5543 4c45 2041 4f50 494c 4554 4e43 4349 2041 414e 4943 4e4f 4c41

.DB

ESCUELA POLITECNICA NACIONAL

TABLA: .DB

"ESCUELA POLITECNICA NACIONAL"

nicamente cambiando la lnea que contiene el texto en comillas y el valor inicial del contador, este mdulo fuente sirve para llenar las primeras localidades de la SRAM con los cdigos ASCII del texto: FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICAS .NOLIST .INCLUDE m164pdef.inc .LIST ; .EQU NCOD = 47 .DEF AUX = R16

Valor inicial del contador

Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redes de Informacin

SISTEMAS MICROPROCESADOS: Ejercicios para crear tablas de datos en la FLASH Pgina 13

.DEF ; .DSEG DATOS: ; .CSEG

CONTADOR = R17 .BYTE LDI LDI LDI LDI LDI LPM ST DEC BRNE RJMP .DB NCOD XL,LOW(DATOS) XH,HIGH(DATOS) ZL,LOW(TABLA<<1) ZH,HIGH(TABLA<<1) CONTADOR,NCOD AUX,Z+ X+,AUX CONTADOR LAZO FIN
FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICAS,0

LAZO:

; FIN: ; TABLA:

VENTANA DE LA MEMORIA DESPUS DE LA EJECUCIN DE LA SEGUNDA SOLUCIN, CON LA MODIFICACIN DEL TEXTO Y DEL CONTADOR

MODIFICACIN AL SEGUNDA SOLUCIN

MDULO

FUENTE

DE

LA

Con esta modificacin se consigue que el ensamblador se encargue de obtener el nmero de caracteres que conforman el texto. Esto se realiza mediante con una etiqueta que determine donde termina la tabla, a la que se le resta la etiqueta del inicio para conocer cuantas localidades del programa ocupa la tabla. Este resultado multiplicado por dos ser el nmero de caracteres, que es el valor inicial del contador para control del lazo de repeticin. .NOLIST .INCLUDE m164pdef.inc .LIST ;
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redes de Informacin

SISTEMAS MICROPROCESADOS: Ejercicios para crear tablas de datos en la FLASH Pgina 14

.EQU .DEF .DEF ; .DSEG DATOS: ; .CSEG

NCOD = (FINTBL TABLA) * 2 AUX = R16 CONTADOR = R17 .BYTE LDI LDI LDI LDI LDI LPM ST DEC BRNE RJMP .DB NCOD Clculo del valor inicial del contador

LAZO:

XL,LOW(DATOS) XH,HIGH(DATOS) ZL,LOW(TABLA<<1) ZH,HIGH(TABLA<<1) CONTADOR,NCOD AUX,Z+ X+,AUX CONTADOR LAZO FIN
ESTE CURSO ES EL MAS CHEVERE DE TODAS LAS CARRERAS

; FIN: ; TABLA: FINTBL:

El ensamblador emite un solo mensaje de advertencia, que no afecta al funcionamiento del programa; porque nicamente indica que la etiqueta FINTBL utilizada para calcular el nmero de caracteres no est definida o est referida ms adelante. VENTANA DE LA MEMORIA DESPUS DE LA EJECUCIN DE LA SEGUNDA SOLUCIN, CON LA MODIFICACIN DEL TEXTO Y LA INCLUSIN DEL CLCULO DEL CONTADOR

CUARTA SOLUCIN
La modificacin anterior necesita que la tabla de datos sea de un nmero par de bytes. En caso de que el texto este conformado de un nmero impar de caracteres, se puede utilizar esta nueva solucin que no se realiza a base a un lazo de repeticin controlado por un contador; sino, a base a un lazo de repeticin que termina cuando se identifica un

Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redes de Informacin

SISTEMAS MICROPROCESADOS: Ejercicios para crear tablas de datos en la FLASH Pgina 15

carcter especial que se ubica al final del texto. El carcter especial escogido para este ejemplo es el smbolo $. .NOLIST .INCLUDE m164pdef.inc .LIST ; .DEF AUX = R16 ; .DSEG DATOS: .BYTE ; .CSEG LDI LDI LDI LDI LAZO: LPM CPI BREQ ST RJMP ; FIN: RJMP ; TABLA: .DB

100

Reservar 100 localidades

XL,LOW(DATOS) XH,HIGH(DATOS) ZL,LOW(TABLA<<1) ZH,HIGH(TABLA<<1) AUX,Z+ AUX,`$ FIN X+,AUX LAZO FIN
FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICAS$

EJERCICIO PARA CREAR VARIAS TABLAS EN LA SRAM, SEPARADAS ENTRE SI


Programa para llenar las primeras localidades de la SRAM con los cdigos ASCII de las letras que forman los siguientes tres mensajes, separando con 20 localidades entre el primero y el segundo, y con 17 localidades entre el segundo y el tercero. ESCUELA POLITECNICA NACIONAL FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICAS ESTE CURSO ES EL MAS CHEVERE DE TODAS LAS CARRERAS El proceso de ensamblado de este programa se dificulta, por la obtencin del nmero de caracteres de los textos en base al nmero de localidades que ocupan las tablas; debido a que los mensajes de advertencia se convierten en mensajes de error. Esto se soluciona si trasladamos las lneas donde se definen los nmeros de caracteres y el Segmento de Datos, despus de las lneas que crean las tablas; como se observa a continuacin: .NOLIST .INCLUDE m164pdef.inc .LIST ; .DEF AUX = R16 .DEF CONTADOR = R17 ;
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redes de Informacin

SISTEMAS MICROPROCESADOS: Ejercicios para crear tablas de datos en la FLASH Pgina 16

.CSEG LDI LDI LDI LDI LDI LPM ST DEC BRNE LDI LDI LDI LDI LDI LPM ST DEC BRNE LDI LDI LDI LDI LDI LPM ST DEC BRNE RJMP .DB .DB .DB XL,LOW(DATOS1) XH,HIGH(DATOS1) ZL,LOW(TBL1<<1) ZH,HIGH(TBL1<<1) CONTADOR,NCOD1 AUX,Z+ X+,AUX CONTADOR LAZO1 XL,LOW(DATOS2) XH,HIGH(DATOS2) ZL,LOW(TBL2<<1) ZH,HIGH(TBL2<<1) CONTADOR,NCOD2 AUX,Z+ X+,AUX CONTADOR LAZO2 XL,LOW(DATOS3) XH,HIGH(DATOS3) ZL,LOW(TBL3<<1) ZH,HIGH(TBL3<<1) CONTADOR,NCOD3 AUX,Z+ X+,AUX CONTADOR LAZO3 FIN ESCUELA POLITECNICA NACIONAL
FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICAS,0 ESTE CURSO ES EL MAS CHEVERE DE TODAS LAS CARRERAS

LAZO1:

LAZO2:

LAZO3:

FIN: ; TBL1: TBL2: TBL3: FINTBL: ; .EQU .EQU .EQU ; .DSEG DATOS1: SEPAR1: DATOS2: SEPAR2: DATOS3: ; .EXIT

NCOD1 = (FINTBL TBL3) * 2 NCOD2 = (TBL3 TBL2) * 2 - 1 NCOD3 = (FINTBL TBL3) * 2 .BYTE .BYTE .BYTE .BYTE .BYTE NCOD1 20 NCOD2 17 NCOD3

; FIN DEL MODULO FUENTE

Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redes de Informacin

SISTEMAS MICROPROCESADOS: Ejercicios para crear tablas de datos en la FLASH Pgina 17

VENTANA DE LA MEMORIA DESPUS DE LA EJECUCIN DEL PROGRAMA QUE CREA TRES TABLAS DE DATOS

Tambin se puede codificar este programa utilizando macroinstrucciones y subrutinas. .NOLIST .INCLUDE m164pdef.inc .LIST ; .DEF AUX = R16 .DEF CONTADOR = R17 ; .CSEG .MACRO INICIAR LDI XL,LOW(@0) LDI XH,HIGH(@0) LDI ZL,LOW(@1<<1) LDI ZH,HIGH(@1<<1) LDI CONTADOR,@2 .ENDMACRO ; LDI AUX,LOW(RAMEND) OUT SPL,AUX LDI AUX,HIGH(RAMEND) OUT SPH,AUX ; INICIAR DATOS1,TBL1,NCOD1 RCALL LAZO ; INICIAR DATOS2,TBL2,NCOD2 RCALL LAZO ; INICIAR DATOS3,TBL3,NCOD3 RCALL LAZO ; FIN: RJMP FIN
Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redes de Informacin

SISTEMAS MICROPROCESADOS: Ejercicios para crear tablas de datos en la FLASH Pgina 18

; LAZO:

LPM ST DEC BRNE RET .DB .DB .DB

AUX,Z+ X+,AUX CONTADOR LAZO ESCUELA POLITECNICA NACIONAL


FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICAS,0 ESTE CURSO ES EL MAS CHEVERE DE TODAS LAS CARRERAS

; TBL1: TBL2: TBL3: FINTBL: ; .EQU .EQU .EQU ; .DSEG DATOS1: SEPAR1: DATOS2: SEPAR2: DATOS3: ; .EXIT

NCOD1 = (FINTBL TBL3) * 2 NCOD2 = (TBL3 TBL2) * 2 - 1 NCOD3 = (FINTBL TBL3) * 2 .BYTE .BYTE .BYTE .BYTE .BYTE NCOD1 20 NCOD2 17 NCOD3

; FIN DEL MODULO FUENTE

Ing. Jaime E. Velarde Departamento de Electrnica, Telecomunicaciones y Redes de Informacin

También podría gustarte