SlideShare una empresa de Scribd logo
1 de 17
Descargar para leer sin conexión
SISTEMAS MICROPROCESADOS – Ejercicio para crear tablas de datos en la FLASH
Pag. 1


 EJERCICIO PARA LLENAR LOCALIDADES
     DE LA SRAM, CON EL CONTENIDO DE
 TABLAS QUE SE CREAN EN LA MEMORIA
                            DEL PROGRAMA
Desarrollar un programa que permita llenar las primeras localidades de la SRAM con
los códigos ASCII correspondiente a las letras del siguiente texto:

                        ESCUELA POLITECNICA NACIONAL




Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
SISTEMAS MICROPROCESADOS – Ejercicio para crear tablas de datos en la FLASH
Pag. 2


PRIMERA SOLUCIÓN
Esta solución implica que el programa genere los códigos ASCII del texto, mediante el
direccionamiento inmediato para luego almacenarlos 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 dirección de la SRAM, a
la que se la etiqueta como DATOS. Y el registro R16, al que se lo etiqueta como AUX,
se lo utiliza para generar los códigos.

.NOLIST
.INCLUDE       "m164pdef.inc"
.LIST
;
.EQU           NCOD            = 28
;
.DEF           AUX             = R16
;
.DSEG
DATOS:         .BYTE NCOD
;
.CSEG
               LDI             XL,LOW(DATOS)
               LDI             XH,HIGH(DATOS)
               LDI             AUX,'E'
               ST              X+,AUX
               LDI             AUX,'S'
               ST              X+,AUX
               LDI             AUX,'C'
               ST              X+,AUX
               LDI             AUX,'U'
               ST              X+,AUX
               LDI             AUX,'E'
               ST              X+,AUX
               LDI             AUX,'L'
               ST              X+,AUX
               LDI             AUX,'A'
               ST              X+,AUX
               LDI             AUX,' '
               ST              X+,AUX
               LDI             AUX,'P'
               ST              X+,AUX
               LDI             AUX,'O'
               ST              X+,AUX
               LDI             AUX,'L'
               ST              X+,AUX
               LDI             AUX,'I'
               ST              X+,AUX
               LDI             AUX,'T'
               ST              X+,AUX
               LDI             AUX,'E'


Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
SISTEMAS MICROPROCESADOS – Ejercicio para crear tablas de datos en la FLASH
Pag. 3

               ST              X+,AUX
               LDI             AUX,'C'
               ST              X+,AUX
               LDI             AUX,'N'
               ST              X+,AUX
               LDI             AUX,'I'
               ST              X+,AUX
               LDI             AUX,'C'
               ST              X+,AUX
               LDI             AUX,'A'
               ST              X+,AUX
               LDI             AUX,' '
               ST              X+,AUX
               LDI             AUX,'N'
               ST              X+,AUX
               LDI             AUX,'A'
               ST              X+,AUX
               LDI             AUX,'C'
               ST              X+,AUX
               LDI             AUX,'I'
               ST              X+,AUX
               LDI             AUX,'O'
               ST              X+,AUX
               LDI             AUX,'N'
               ST              X+,AUX
               LDI             AUX,'A'
               ST              X+,AUX
               LDI             AUX,'L'
               ST              X+,AUX
;
FIN:           RJMP            FIN
;
.EXIT          ; FIN DEL MODULO FUENTE

SEGUNDA SOLUCIÓN
Como se puede apreciar la primera solución no es una solución eficiente. Lo que lleva al
desarrollo de esta segunda solución, que consiste en un lazo de repetición donde el
programa no es el que genera los códigos, sino que los lee desde la memoria del
programa y los almacena en la SRAM.

Para implementar el algoritmo de esta solución, se utiliza al Puntero X para almacenar
los códigos en la SRAM y al Puntero Z (registros R30 y R31) para leerlos desde la
memoria del programa. La inicialización de este último puntero debe considerar que los
contenidos de la memoria del programa son de 16 bits, es decir que pueden contener dos
códigos en cada localidad.

El registro R16 se lo utiliza para la transferencia del código de la memoria del programa
hacia la SRAM y R17 es el contador para controlar el lazo de repetición; es por eso, que
se los etiqueta como AUX y CONTADOR.


Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
SISTEMAS MICROPROCESADOS – Ejercicio para crear tablas de datos en la FLASH
Pag. 4

La tabla de códigos ASCII que se crea en la memoria del programa, se la consigue
mediante el uso de la Directiva DB que Define Byte o Bytes Constantes en la Memoria
del Programa o en la EEPROM .

.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
;
TABLA:         .DB             0x45
               .DB             0x53
               .DB             0x43
               .DB             0x55
               .DB             0x45
               .DB             0x4C
               .DB             0x41
               .DB             0x20
               .DB             0x50
               .DB             0x4F
               .DB             0x4C
               .DB             0x49
               .DB             0x54
               .DB             0x45
               .DB             0x43
               .DB             0x4E
               .DB             0x49
               .DB             0x43
               .DB             0x41
               .DB             0x20
               .DB             0x4E


Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
SISTEMAS MICROPROCESADOS – Ejercicio para crear tablas de datos en la FLASH
Pag. 5

                .DB            0x41
                .DB            0x43
                .DB            0x49
                .DB            0x4F
                .DB            0x4E
                .DB            0x41
                .DB            0x4C
;
.EXIT           ; FIN DEL MODULO FUENTE

El resultado del ensamblado no tiene errores, pero si una serie de mensajes de atención
(WARNING) en las líneas DB

                      .LIST
                      ;
                      .EQU     NCOD            = 28
                      ;
                      .DEF     AUX             = R16
                      .DEF     CONTADOR        = R17
                      ;
                      .DSEG
000100                DATOS:   .BYTE NCOD
                      ;
                      .CSEG
000000   e0a0                  LDI             XL,LOW(DATOS)
000001   e0b1                  LDI             XH,HIGH(DATOS)
000002   e1e4                  LDI             ZL,LOW(TABLA<<1)
000003   e0f0                  LDI             ZH,HIGH(TABLA<<1)
000004   e11c                  LDI             CONTADOR,NCOD
000005   9105         LAZO:    LPM             AUX,Z+
000006   930d                  ST              X+,AUX
000007   951a                  DEC             CONTADOR
000008   f7e1                  BRNE            LAZO
                 ;
000009 cfff      FIN:     RJMP         FIN
                 ;
C:........asm(36): warning: .cseg .db misalignment - padding zero byte
00000a 0045      TABLA:   .DB          0x45
C: ........asm(37): warning: .cseg .db misalignment - padding zero byte
00000b 0053               .DB          0x53
C: ........asm(38): warning: .cseg .db misalignment - padding zero byte
00000c 0043               .DB          0x43
C: ........asm(39): warning: .cseg .db misalignment - padding zero byte
00000d 0055               .DB          0x55
C: ........asm(40): warning: .cseg .db misalignment - padding zero byte
00000e 0045               .DB          0x45
C: ........asm(41): warning: .cseg .db misalignment - padding zero byte
00000f 004c               .DB          0x4C
C: ........asm(42): warning: .cseg .db misalignment - padding zero byte
000010 0041               .DB          0x41
C: ........asm(43): warning: .cseg .db misalignment - padding zero byte
000011 0020               .DB          0x20
C: ........asm(44): warning: .cseg .db misalignment - padding zero byte
000012 0050               .DB          0x50
C: ........asm(45): warning: .cseg .db misalignment - padding zero byte
000013 004f               .DB          0x4F
C: ........asm(46): warning: .cseg .db misalignment - padding zero byte
000014 004c               .DB          0x4C
C: ........asm(47): warning: .cseg .db misalignment - padding zero byte
000015 0049               .DB          0x49
C: ........asm(48): warning: .cseg .db misalignment - padding zero byte
000016 0054               .DB          0x54
C: ........asm(49): warning: .cseg .db misalignment - padding zero byte




Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
SISTEMAS MICROPROCESADOS – Ejercicio para crear tablas de datos en la FLASH
Pag. 6

000017 0045                   .DB            0x45
C: ........asm(50):     warning:   .cseg .db misalignment     - padding zero byte
000018 0043                   .DB            0x43
C: ........asm(51):     warning:   .cseg .db misalignment     - padding zero byte
000019 004e                   .DB            0x4E
C: ........asm(52):     warning:   .cseg .db misalignment     - padding zero byte
00001a 0049                   .DB            0x49
C: ........asm(53):     warning:   .cseg .db misalignment     - padding zero byte
00001b 0043                   .DB            0x43
C: ........asm(54):     warning:   .cseg .db misalignment     - padding zero byte
00001c 0041                   .DB            0x41
C: ........asm(55):     warning:   .cseg .db misalignment     - padding zero byte
00001d 0020                   .DB            0x20
C: ........asm(56):     warning:   .cseg .db misalignment     - padding zero byte
00001e 004e                   .DB            0x4E
C: ........asm(57):     warning:   .cseg .db misalignment     - padding zero byte
00001f 0041                   .DB            0x41
C: ........asm(58):     warning:   .cseg .db misalignment     - padding zero byte
000020 0043                   .DB            0x43
C: ........asm(59):     warning:   .cseg .db misalignment     - padding zero byte
000021 0049                   .DB            0x49
C: ........asm(60):     warning:   .cseg .db misalignment     - padding zero byte
000022 004f                   .DB            0x4F
C: ........asm(61):     warning:   .cseg .db misalignment     - padding zero byte
000023 004e                   .DB            0x4E
C: ........asm(62):     warning:   .cseg .db misalignment     - padding zero byte
000024 0041                   .DB            0x41
C: ........asm(63):     warning:   .cseg .db misalignment     - padding zero byte
000025 004c                   .DB            0x4C


Los mensajes de atención indican que los bytes constantes se los acopla con un byte de
cero, para no perder el alineamiento. Por lo tanto, para que sea solución al problema es
necesario incluir dentro del lazo de repetición, un incremento del Puntero Z mediante el
incremento del registro ZL (R30), como se indica a continuación:

LAZO:          LPM             AUX,Z+
               INC             ZL
               ST              X+,AUX
               DEC             CONTADOR
               BRNE            LAZO

Esta modificación a la solución falla, cuando la tabla de datos que se crea se encuentra
en localidades donde cambia el bit 7 de la dirección.

TERCERA SOLUCIÓN
Se puede solucionar la dificultad de crear la tabla en forma correcta mediante la
utilización de la Directiva DW que Define Word o Palabras Constantes en la Memoria
del Programa o en la EEPROM.

.NOLIST
.INCLUDE       "m164pdef.inc"
.LIST
;
.EQU           NCOD            = 28
;
.DEF           AUX             = R16


Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
SISTEMAS MICROPROCESADOS – Ejercicio para crear tablas de datos en la FLASH
Pag. 7

.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            0xF8
TABLA:          .DW            0x4553
                .DW            0x4355
                .DW            0x454C
                .DW            0x4120
                .DW            0x504F
                .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 Módulo Fuente ya no tiene mensajes de atención ni errores, pero
no es la solución al problema. Porque en el lazo de repetición se lee primero el byte par
y luego el impar; es decir primero se lee el código ASCII de la S y luego el de la E y así
sucesivamente.

                    .ORG       0xF8
0000f8   4553       TABLA:     .DW             0x4553
0000f9   4355                  .DW             0x4355
0000fa   454c                  .DW             0x454C
0000fb   4120                  .DW             0x4120
0000fc   504f                  .DW             0x504F
0000fd   4c49                  .DW             0x4C49
0000fe   5445                  .DW             0x5445
0000ff   434e                  .DW             0x434E
000100   4943                  .DW             0x4943
000101   4120                  .DW             0x4120
000102   4e41                  .DW             0x4E41
000103   4349                  .DW             0x4349
000104   4f4e                  .DW             0x4F4E



Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
SISTEMAS MICROPROCESADOS – Ejercicio para crear tablas de datos en la FLASH
Pag. 8

000105 414c                    .DW             0x414C

La corrección de la tabla en la solución será intercambiar los bytes como se muestra a
continuación:

.ORG            0xF8
TABLA:          .DW            0x5345
                .DW            0x5543
                .DW            0x4C45
                .DW            0x2041
                .DW            0x4F50
                .DW            0x494C
                .DW            0x4554
                .DW            0x4E43
                .DW            0x4349
                .DW            0x2041
                .DW            0x414E
                .DW            0x4943
                .DW            0x4E4F
                .DW            0x4C41

                    .ORG       0xF8
0000f8   5345       TABLA:     .DW             0x5345
0000f9   5543                  .DW             0x5543
0000fa   4c45                  .DW             0x4C45
0000fb   2041                  .DW             0x2041
0000fc   4f50                  .DW             0x4F50
0000fd   494c                  .DW             0x494C
0000fe   4554                  .DW             0x4554
0000ff   4e43                  .DW             0x4E43
000100   4349                  .DW             0x4349
000101   2041                  .DW             0x2041
000102   414e                  .DW             0x414E
000103   4943                  .DW             0x4943
000104   4e4f                  .DW             0x4E4F
000105   4c41                  .DW             0x4C41


También se puede crear la tabla con menos líneas.

TABLA:          .DW            0x5345, 0x5543, 0x4C45, 0x2041, 0x4F50, 0x494C
                .DW            0x4554, 0x4E43, 0x4349, 0x2041, 0x414E
                .DW            0x4943, 0x4E4F, 0x4C41

0000f8   5345
0000f9   5543
0000fa   4c45
0000fb   2041
0000fc   4f50
0000fd   494c       TABLA:     .DW     0x5345,0x5543,0x4C45,0x2041,0x4F50,0x494C
0000fe   4554
0000ff   4e43
000100   4349
000101   2041
000102   414e                  .DW     0x4554,0x4E43,0x4349,0x2041,0x414E
000103   4943
000104   4e4f
000105   4c41                  .DW     0x4943, 0x4E4F,0x4C41




Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
SISTEMAS MICROPROCESADOS – Ejercicio para crear tablas de datos en la FLASH
Pag. 9

Regresando a la segunda solución, la creación de la tabla se puede apreciar en forma
clara si se usa los mismos símbolos de las letras y del espacio en blanco entre comillas.

TABLA:         .DB             "E"
               .DB             "S"
               .DB             "C"
               .DB             "U"
               .DB             "E"
               .DB             "L"
               .DB             "A"
               .DB             ""
               .DB             "P"
               .DB             "O"
               .DB             "L"
               .DB             "I"
               .DB             "T"
               .DB             "E"
               .DB             "C"
               .DB             "N"
               .DB             "I"
               .DB             "C"
               .DB             "A"
               .DB             ""
               .DB             "N"
               .DB             "A"
               .DB             "C"
               .DB             "I"
               .DB             "O"
               .DB             "N"
               .DB             "A"
               .DB             "L"

Pero, se mantienen los mensajes de atención ya analizados.

C: .......asm(34): warning: .cseg        .db misalignment    - padding zero byte
00000a 0045      TABLA:   .DB                 “E”
C: .......asm(35): warning: .cseg        .db misalignment    - padding zero byte
00000b 0053               .DB                 “S”
C: .......asm(36): warning: .cseg        .db misalignment    - padding zero byte
00000c 0043               .DB                 “C”
C: .......asm(37): warning: .cseg        .db misalignment    - padding zero byte
00000d 0055               .DB                 “U”
C: .......asm(38): warning: .cseg        .db misalignment    - padding zero byte
00000e 0045               .DB                 “E”
C: .......asm(39): warning: .cseg        .db misalignment    - padding zero byte
00000f 004c               .DB                 “L”
C: .......asm(40): warning: .cseg        .db misalignment    - padding zero byte
000010 0041               .DB                 “A”
C: .......asm(41): warning: .cseg        .db misalignment    - padding zero byte
000011 0020               .DB                 “ ”
C: .......asm(42): warning: .cseg        .db misalignment    - padding zero byte
000012 0050               .DB                 “P”
C: .......asm(43): warning: .cseg        .db misalignment    - padding zero byte
000013 004f               .DB                 “O”
C: .......asm(44): warning: .cseg        .db misalignment    - padding zero byte
000014 004c               .DB                 “L”



Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
SISTEMAS MICROPROCESADOS – Ejercicio para crear tablas de datos en la FLASH
Pag. 10

C: .......asm(45):     warning: .cseg    .db misalignment    - padding zero byte
000015 0049                   .DB             “I”
C: .......asm(46):     warning: .cseg    .db misalignment    - padding zero byte
000016 0054                   .DB             “T”
C: .......asm(47):     warning: .cseg    .db misalignment    - padding zero byte
000017 0045                   .DB             “E”
C: .......asm(48):     warning: .cseg    .db misalignment    - padding zero byte
000018 0043                   .DB             “C”
C: .......asm(49):     warning: .cseg    .db misalignment    - padding zero byte
000019 004e                   .DB             “N”
C: .......asm(50):     warning: .cseg    .db misalignment    - padding zero byte
00001a 0049                   .DB             “I”
C: .......asm(51):     warning: .cseg    .db misalignment    - padding zero byte
00001b 0043                   .DB             “C”
C: .......asm(52):     warning: .cseg    .db misalignment    - padding zero byte
00001c 0041                   .DB             “A”
C: .......asm(53):     warning: .cseg    .db misalignment    - padding zero byte
00001d 0020                   .DB             “ ”
C: .......asm(54):     warning: .cseg    .db misalignment    - padding zero byte
00001e 004e                   .DB             “N”
C: .......asm(55):     warning: .cseg    .db misalignment    - padding zero byte
00001f 0041                   .DB             “A”
C: .......asm(56):     warning: .cseg    .db misalignment    - padding zero byte
000020 0043                   .DB             “C”
C: .......asm(57):     warning: .cseg    .db misalignment    - padding zero byte
000021 0049                   .DB             “I”
C: .......asm(58):     warning: .cseg    .db misalignment    - padding zero byte
000022 004f                   .DB             “O”
C: .......asm(59):     warning: .cseg    .db misalignment    - padding zero byte
000023 004e                   .DB             “N”
C: .......asm(60):     warning: .cseg    .db misalignment    - padding zero byte
000024 0041                   .DB             “A”
C: .......asm(61):     warning: .cseg    .db misalignment    - padding zero byte
000025 004c                   .DB             “L”


Se puede también disminuir el número de líneas para crear la tabla, donde se eliminan
los mensajes de atención en dos de esas líneas y se mantiene en las otras dos. Esto se
debe, a que las primeras tienen un número par de caracteres y las otras no.

TABLA:         .DB             "E","S","C","U","E","L","A"," "
               .DB             "P","O","L","I","T","E","C","N","I","C","A"," "
               .DB             "N","A","C","I","O","N","A"
               .DB             "L"

0000f8 5345
0000f9 5543
0000fa 4c45
0000fb 2041      TABLA:   .DB    "E","S","C","U","E","L","A"," "
0000fc 4f50
0000fd 494c
0000fe 4554
0000ff 4e43
000100 4349
000101 2041               .DB "P","O","L","I","T","E","C","N","I","C","A"," "
000102 414e
000103 4943
000104 4e4f
C: .......asm(37): warning: .cseg .db misalignment - padding zero byte
000105 0041               .DB           "N","A","C","I","O","N","A"
C: .......asm(38): warning: .cseg .db misalignment - padding zero byte
000106 004c               .DB           "L"




Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
SISTEMAS MICROPROCESADOS – Ejercicio para crear tablas de datos en la FLASH
Pag. 11

Por eso, se debe tener cuidado de crear tablas de bytes en un número par, para evitar que
se acoplen con byte cero debido al alineamiento.

TABLA:          .DB            "E","S","C","U","E","L","A"," "
                .DB            "P","O","L","I","T","E","C","N","I","C","A"," "
                .DB            "N","A","C","I","O","N","A","L"

0000f8   5345
0000f9   5543
0000fa   4c45
0000fb   2041         TABLA:   .DB     "E","S","C","U","E","L","A"," "
0000fc   4f50
0000fd   494c
0000fe   4554
0000ff   4e43
000100   4349
000101   2041                  .DB   "P","O","L","I","T","E","C","N","I","C","A"," "
000102   414e
000103   4943
000104   4e4f
000105   4c41                  .DB     "N","A","C","I","O","N","A","L"


También se puede agrupar los caracteres dentro de comillas y mejorar la presentación.

TABLA:          .DB            "ESCUELA "
                .DB            "POLITECNICA "
                .DB            "NACIONAL"

0000f8   5345
0000f9   5543
0000fa   4c45
0000fb   2041         TABLA:   .DB             "ESCUELA "
0000fc   4f50
0000fd   494c
0000fe   4554
0000ff   4e43
000100   4349
000101   2041                  .DB             "POLITECNICA "
000102   414e
000103   4943
000104   4e4f
000105   4c41                  .DB             "NACIONAL"


Por último, para este caso se puede tener una solo línea con la que se crea toda la tabla.

TABLA:          .DB            "ESCUELA POLITECNICA NACIONAL"

0000f8   5345
0000f9   5543
0000fa   4c45
0000fb   2041
0000fc   4f50
0000fd   494c
0000fe   4554
0000ff   4e43
000100   4349
000101   2041
000102   414e
000103   4943
000104   4e4f
000105   4c41         TABLA:   .DB             "ESCUELA POLITECNICA NACIONAL"



Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
SISTEMAS MICROPROCESADOS – Ejercicio para crear tablas de datos en la FLASH
Pag. 12

Únicamente cambiando la línea que contiene el texto en comillas y el contador, este
módulo fuente sirve para llenar las primeras localidades de la SRAM con los códigos
ASCII del texto:

          FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICAS

.NOLIST
.INCLUDE        "m164pdef.inc"
.LIST
;
.EQU            NCOD           = 47
;
.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            0xF8
TABLA:          .DB            "FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICAS", 0

                    .LIST
                    ;
                    .EQU       NCOD            = 47
                    ;
                    .DEF       AUX             = R16
                    .DEF       CONTADOR        = R17
                    ;
                    .DSEG
000060              DATOS:     .BYTE NCOD
                    ;
                    .CSEG
000000   e6a0                  LDI             XL,LOW(DATOS)
000001   e0b0                  LDI             XH,HIGH(DATOS)
000002   efe0                  LDI             ZL,LOW(TABLA<<1)
000003   e0f1                  LDI             ZH,HIGH(TABLA<<1)
000004   e311                  LDI             CONTADOR,NCOD
000005   9105       LAZO:      LPM             AUX,Z+
000006   930d                  ST              X+,AUX
000007   951a                  DEC             CONTADOR
000008   f7e1                  BRNE            LAZO
                    ;
000009 cfff         FIN:       RJMP            FIN



Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
SISTEMAS MICROPROCESADOS – Ejercicio para crear tablas de datos en la FLASH
Pag. 13

                    .ORG       $F8
0000f8   4146
0000f9   5543
0000fa   544c
0000fb   4441
0000fc   4420
0000fd   2045
0000fe   4e49
0000ff   4547
000100   494e
000101   5245
000102   4149
000103   4520
000104   454c
000105   5443
000106   4952
000107   4143
000108   5920
000109   4520
00010a   454c
00010b   5443
00010c   4f52
00010d   494e
00010e   4143
00010f   0053      TABLA   .DB "FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICAS",0


CUARTA SOLUCIÓN
En esta solución, se consigue al momento de ensamblar el número de caracteres que
conforman el texto. Esto se hace mediante el uso de una etiqueta que indique donde
termina la tabla, a la que se le resta la etiqueta del inicio para conocer cuantas
localidades del programa ocupa. Este resultado multiplicado por dos será el número de
caracteres que es el valor inicial del contador para control del lazo de repetición.

.NOLIST
.INCLUDE        "m164pdef.inc"
.LIST
;
.EQU            NCOD           = (FINTBL-TABLA)*2
;
.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


Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
SISTEMAS MICROPROCESADOS – Ejercicio para crear tablas de datos en la FLASH
Pag. 14

;
FIN:            RJMP           FIN
;
.ORG            0xF8
TABLA:          .DB            "ESTE CURSO ES EL MAS CHEVERE DE TODAS LAS CARRERAS"
FINTBL:         .DB            0,0
;
.EXIT           ; FIN DEL MODULO FUENTE

El ensamblado emite un solo mensaje de atención, que no afecta al funcionamiento del
programa; porque únicamente indica que la etiqueta FINTBL utilizada para calcular el
número de caracteres no está definida o está referida más adelante.

                    .LIST
                    ;
                    .EQU       NCOD            = (FINTBL-TABLA)*2
                    ;
                    .DEF       AUX             = R16
                    .DEF       CONTADOR        = R17
                    ;
                    .DSEG
000100              DATOS:     .BYTE NCOD
                    ;
                    .CSEG
000000   e0a0                  LDI             XL,LOW(DATOS)
000001   e0b1                  LDI             XH,HIGH(DATOS)
000002   efe0                  LDI             ZL,LOW(TABLA<<1)
000003   e0f1                  LDI             ZH,HIGH(TABLA<<1)
000004   e312                  LDI             CONTADOR,NCOD
000005   9105       LAZO:      LPM             AUX,Z+
000006   930d                  ST              X+,AUX
000007   951a                  DEC             CONTADOR
000008   f7e1                  BRNE            LAZO
                    ;
000009 cfff         FIN:       RJMP            FIN
                    ;
                    .ORG       0xF8
0000f8   5345
0000f9   4554
0000fa   4320
0000fb   5255
0000fc   4f53
0000fd   4520
0000fe   2053
0000ff   4c45
000100   4d20
000101   5341
000102   4320
000103   4548
000104   4556
000105   4552
000106   4420
000107   2045
000108   4f54
000109   4144
00010a   2053
00010b   414c
00010c   2053
00010d   4143
00010e   5252
00010f   5245
000110   5341     TABLA: .DB "ESTE CURSO ES EL MAS CHEVERE DE TODAS LAS CARRERAS"
000111   0000     FINTBL: .DB 0,0




Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
SISTEMAS MICROPROCESADOS – Ejercicio para crear tablas de datos en la FLASH
Pag. 15



QUINTA SOLUCIÓN
La solución anterior necesita que la tabla de datos sea de un número par de bytes. En
caso de que el texto este conformado de un número impar de caracteres, se puede
utilizar esta nueva solución que no se realiza a base a un lazo de repetición controlado
por un contador; sino, a base a un lazo de repetición que termina cuando se identifica un
carácter especial que se ubica al final del texto. El carácter especial escogido para este
ejemplo es el símbolo “$”

.NOLIST
.INCLUDE       "m164pdef.inc"
.LIST
;
.EQU           NCOD            = (FINTBL-TABLA)*2
;
.DEF           AUX             = R16
;
.DSEG
DATOS:         .BYTE NCOD
;
.CSEG
               LDI             XL,LOW(DATOS)
               LDI             XH,HIGH(DATOS)
               LDI             ZL,LOW(TABLA<<1)
               LDI             ZH,HIGH(TABLA<<1)
LAZO:          LPM             AUX,Z+
               CPI             AUX,'$'
               BREQ            FIN
               ST              X+,AUX
               RJMP            LAZO
;
FIN:           RJMP            FIN
;
.ORG           0xF8
TABLA:         .DB             "FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICAS$"
FINTBL:        .DB             0,0
;
.EXIT          ; FIN DEL MODULO FUENTE

Al ensamblar se emiten un mensaje de atención, que no afectan al funcionamiento del
programa.

EJERCICIO PARA CREAR VARIAS TABLAS EN
DISTINTAS LOCALIDADES DE LA SRAM
Programa para llenar en las primeras localidades de la SRAM con los códigos ASCII de
las letras y signos que forman los siguientes tres mensajes, separándolos entre ellos por
cuatro localidades.


Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
SISTEMAS MICROPROCESADOS – Ejercicio para crear tablas de datos en la FLASH
Pag. 16



                   ESCUELA POLITECNICA NACIONAL
         FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICAS
        ESTE CURSO ES EL MAS CHEVERE DE TODAS LAS CARRERAS

La ejecución del ensamblado de este programa se dificulta, por la obtención del número
de caracteres de los textos en base al número de localidades que ocupan las tablas;
debido a que los mensajes de atención se convierten en mensajes de error. Esto se
soluciona si trasladamos las líneas donde se definen los números de caracteres y el
Segmento de Datos, después de las líneas que crean las tablas; como se observa a
continuación:

.NOLIST
.INCLUDE       "m164pdef.inc"
.LIST
;
.DEF           AUX      = R16
.DEF           CONTADOR = R17
;
.CSEG
               LDI             XL,LOW(DATOS1)
               LDI             XH,HIGH(DATOS1)
               LDI             ZL,LOW(TBL1<<1)
               LDI             ZH,HIGH(TBL1<<1)
               LDI             CONTADOR,NCOD1
LAZO1:         LPM             AUX,Z+
               ST              X+,AUX
               DEC             CONTADOR
               BRNE            LAZO1
;
               LDI             XL,LOW(DATOS2)
               LDI             XH,HIGH(DATOS2)
               LDI             ZL,LOW(TBL2<<1)
               LDI             ZH,HIGH(TBL2<<1)
               LDI             CONTADOR,NCOD2
LAZO2:         LPM             AUX,Z+
               ST              X+,AUX
               DEC             CONTADOR
               BRNE            LAZO2
;
               LDI             XL,LOW(DATOS3)
               LDI             XH,HIGH(DATOS3)
               LDI             ZL,LOW(TBL3<<1)
               LDI             ZH,HIGH(TBL3<<1)
               LDI             CONTADOR,NCOD3
LAZO3:         LPM             AUX,Z+
               ST              X+,AUX
               DEC             CONTADOR
               BRNE            LAZO3
;


Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
SISTEMAS MICROPROCESADOS – Ejercicio para crear tablas de datos en la FLASH
Pag. 17

FIN:           RJMP            FIN
;
.ORG           0xF8
TBL1:          .DB             "ESCUELA POLITECNICA NACIONAL"
TBL2:          .DB             "FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICAS",0
TBL3:          .DB             "ESTE CURSO ES EL MAS CHEVERE DE TODAS LAS CARRERAS"
FTBL:          .DB             0,0
;
.EQU           NCOD1           = (TBL2-TBL1)*2
.EQU           NCOD2           = (TBL3-TBL2)*2 - 1
.EQU           NCOD3           = (FTBL-TBL3)*2
;
.DSEG
DATOS1:        .BYTE NCOD1
SEPAR1:        .BYTE 4
DATOS2:        .BYTE NCOD2
SEPAR2:        .BYTE 4
DATOS3:        .BYTE NCOD3
;
.EXIT          ; FIN DEL MODULO FUENTE




Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información

Más contenido relacionado

La actualidad más candente

Funcionamiento del Timer 0
Funcionamiento del Timer 0Funcionamiento del Timer 0
Funcionamiento del Timer 0Jaime E. Velarde
 
Ejercicios 07 interrupciones
Ejercicios 07 interrupcionesEjercicios 07 interrupciones
Ejercicios 07 interrupcionesJaime E. Velarde
 
Ejercicio 07 adicionales de Interrupciones
Ejercicio 07 adicionales de InterrupcionesEjercicio 07 adicionales de Interrupciones
Ejercicio 07 adicionales de InterrupcionesJaime E. Velarde
 
Descripcion detallada del pic 16 f877
Descripcion detallada del pic 16 f877Descripcion detallada del pic 16 f877
Descripcion detallada del pic 16 f877Raphael Raphael
 
Circuitos combinacionales
Circuitos combinacionalesCircuitos combinacionales
Circuitos combinacionalesJonathan P C
 
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, LECCIÓN 2 RESUELTA 2do PARCIAL (2019 2do ...
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, LECCIÓN 2 RESUELTA 2do PARCIAL (2019 2do ...⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, LECCIÓN 2 RESUELTA 2do PARCIAL (2019 2do ...
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, LECCIÓN 2 RESUELTA 2do PARCIAL (2019 2do ...Victor Asanza
 
Tercer Laboratorio - Sistemas Digitales I
Tercer Laboratorio - Sistemas Digitales ITercer Laboratorio - Sistemas Digitales I
Tercer Laboratorio - Sistemas Digitales IAndy Juan Sarango Veliz
 
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, LECCIÓN 1 RESUELTA 2do PARCIAL (2019 2do ...
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, LECCIÓN 1 RESUELTA 2do PARCIAL (2019 2do ...⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, LECCIÓN 1 RESUELTA 2do PARCIAL (2019 2do ...
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, LECCIÓN 1 RESUELTA 2do PARCIAL (2019 2do ...Victor Asanza
 
Primer Laboratorio - Sistemas Digitales I
Primer Laboratorio - Sistemas Digitales IPrimer Laboratorio - Sistemas Digitales I
Primer Laboratorio - Sistemas Digitales IAndy Juan Sarango Veliz
 
Presentacion final
Presentacion finalPresentacion final
Presentacion finalANGOR54
 

La actualidad más candente (20)

Ejercicio 01 Llenar
Ejercicio 01 LlenarEjercicio 01 Llenar
Ejercicio 01 Llenar
 
Funcionamiento del Timer 0
Funcionamiento del Timer 0Funcionamiento del Timer 0
Funcionamiento del Timer 0
 
Ejercicios 07 interrupciones
Ejercicios 07 interrupcionesEjercicios 07 interrupciones
Ejercicios 07 interrupciones
 
Funcionamiento del CAD
Funcionamiento del CADFuncionamiento del CAD
Funcionamiento del CAD
 
Ejercicio 07 adicionales de Interrupciones
Ejercicio 07 adicionales de InterrupcionesEjercicio 07 adicionales de Interrupciones
Ejercicio 07 adicionales de Interrupciones
 
Ejercicio 04 Calculos
Ejercicio 04 CalculosEjercicio 04 Calculos
Ejercicio 04 Calculos
 
Puertoserial[1]
Puertoserial[1]Puertoserial[1]
Puertoserial[1]
 
Conversor ADC
Conversor ADCConversor ADC
Conversor ADC
 
Descripcion detallada del pic 16 f877
Descripcion detallada del pic 16 f877Descripcion detallada del pic 16 f877
Descripcion detallada del pic 16 f877
 
Uart
UartUart
Uart
 
Clase MSI
Clase MSIClase MSI
Clase MSI
 
17309828
1730982817309828
17309828
 
Circuitos combinacionales
Circuitos combinacionalesCircuitos combinacionales
Circuitos combinacionales
 
Conectores
ConectoresConectores
Conectores
 
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, LECCIÓN 2 RESUELTA 2do PARCIAL (2019 2do ...
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, LECCIÓN 2 RESUELTA 2do PARCIAL (2019 2do ...⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, LECCIÓN 2 RESUELTA 2do PARCIAL (2019 2do ...
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, LECCIÓN 2 RESUELTA 2do PARCIAL (2019 2do ...
 
Tercer Laboratorio - Sistemas Digitales I
Tercer Laboratorio - Sistemas Digitales ITercer Laboratorio - Sistemas Digitales I
Tercer Laboratorio - Sistemas Digitales I
 
Usart
UsartUsart
Usart
 
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, LECCIÓN 1 RESUELTA 2do PARCIAL (2019 2do ...
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, LECCIÓN 1 RESUELTA 2do PARCIAL (2019 2do ...⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, LECCIÓN 1 RESUELTA 2do PARCIAL (2019 2do ...
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, LECCIÓN 1 RESUELTA 2do PARCIAL (2019 2do ...
 
Primer Laboratorio - Sistemas Digitales I
Primer Laboratorio - Sistemas Digitales IPrimer Laboratorio - Sistemas Digitales I
Primer Laboratorio - Sistemas Digitales I
 
Presentacion final
Presentacion finalPresentacion final
Presentacion final
 

Destacado

Microcontroladores ASM
Microcontroladores ASMMicrocontroladores ASM
Microcontroladores ASMdave
 
Programación multitarea en microcontroladores avr de 8 bits.
Programación multitarea en microcontroladores avr de 8 bits.Programación multitarea en microcontroladores avr de 8 bits.
Programación multitarea en microcontroladores avr de 8 bits.Hazur Sahib
 
Ejercicios 04 cálculo continuación
Ejercicios 04 cálculo continuaciónEjercicios 04 cálculo continuación
Ejercicios 04 cálculo continuaciónJaime E. Velarde
 
Microcontroladores PIC
Microcontroladores PICMicrocontroladores PIC
Microcontroladores PICSohar Carr
 
09 Conjunto de Instrucciones de los Atmega
09 Conjunto de Instrucciones  de los Atmega09 Conjunto de Instrucciones  de los Atmega
09 Conjunto de Instrucciones de los AtmegaJaime E. Velarde
 
Guía de ejercicios resueltos tema 2
Guía de ejercicios resueltos tema 2Guía de ejercicios resueltos tema 2
Guía de ejercicios resueltos tema 2Luis Zurita
 

Destacado (11)

Ejercicio 03 Porticos
Ejercicio 03 PorticosEjercicio 03 Porticos
Ejercicio 03 Porticos
 
Ejercicio 05 Subrutinas
Ejercicio 05 SubrutinasEjercicio 05 Subrutinas
Ejercicio 05 Subrutinas
 
Microcontroladores ASM
Microcontroladores ASMMicrocontroladores ASM
Microcontroladores ASM
 
Diapos de pic
Diapos de picDiapos de pic
Diapos de pic
 
Instrucciones avr
Instrucciones avrInstrucciones avr
Instrucciones avr
 
Programación multitarea en microcontroladores avr de 8 bits.
Programación multitarea en microcontroladores avr de 8 bits.Programación multitarea en microcontroladores avr de 8 bits.
Programación multitarea en microcontroladores avr de 8 bits.
 
El PIC16F84
El PIC16F84El PIC16F84
El PIC16F84
 
Ejercicios 04 cálculo continuación
Ejercicios 04 cálculo continuaciónEjercicios 04 cálculo continuación
Ejercicios 04 cálculo continuación
 
Microcontroladores PIC
Microcontroladores PICMicrocontroladores PIC
Microcontroladores PIC
 
09 Conjunto de Instrucciones de los Atmega
09 Conjunto de Instrucciones  de los Atmega09 Conjunto de Instrucciones  de los Atmega
09 Conjunto de Instrucciones de los Atmega
 
Guía de ejercicios resueltos tema 2
Guía de ejercicios resueltos tema 2Guía de ejercicios resueltos tema 2
Guía de ejercicios resueltos tema 2
 

Similar a Ejercicio 02 Tablas

Similar a Ejercicio 02 Tablas (20)

Puerto paralelo
Puerto paraleloPuerto paralelo
Puerto paralelo
 
Fundamento de computadores- Motorola 68000
Fundamento de computadores- Motorola 68000Fundamento de computadores- Motorola 68000
Fundamento de computadores- Motorola 68000
 
HARDWARE
HARDWAREHARDWARE
HARDWARE
 
arduino 2.pptx
arduino 2.pptxarduino 2.pptx
arduino 2.pptx
 
Equipo 6 codigo segment
Equipo 6 codigo segmentEquipo 6 codigo segment
Equipo 6 codigo segment
 
Numeros binarios
Numeros binariosNumeros binarios
Numeros binarios
 
3 --37 en 1 especificaciones
3 --37 en 1 especificaciones3 --37 en 1 especificaciones
3 --37 en 1 especificaciones
 
Arquitectura 8086
Arquitectura 8086Arquitectura 8086
Arquitectura 8086
 
Manual80x86
Manual80x86Manual80x86
Manual80x86
 
Oracle: Lenguaje SQL
Oracle: Lenguaje SQLOracle: Lenguaje SQL
Oracle: Lenguaje SQL
 
I S A
I S AI S A
I S A
 
Wtv020 sd-16 p y arduino
Wtv020 sd-16 p y arduinoWtv020 sd-16 p y arduino
Wtv020 sd-16 p y arduino
 
Puerto paralelo
Puerto paraleloPuerto paralelo
Puerto paralelo
 
Puerto paralelo
Puerto paraleloPuerto paralelo
Puerto paralelo
 
Coexiones de placas madre exposision
Coexiones de placas madre exposisionCoexiones de placas madre exposision
Coexiones de placas madre exposision
 
Coexiones de placas madre exposision
Coexiones de placas madre exposisionCoexiones de placas madre exposision
Coexiones de placas madre exposision
 
Pablo Caro & Jaime Sánchez - I know your P4$$w0rd (and if I don’t, I will gue...
Pablo Caro & Jaime Sánchez - I know your P4$$w0rd (and if I don’t, I will gue...Pablo Caro & Jaime Sánchez - I know your P4$$w0rd (and if I don’t, I will gue...
Pablo Caro & Jaime Sánchez - I know your P4$$w0rd (and if I don’t, I will gue...
 
I Know Your P4$$w0rd (And If I Don't, I Will Guess It...)
I Know Your P4$$w0rd (And If I Don't, I Will Guess It...)I Know Your P4$$w0rd (And If I Don't, I Will Guess It...)
I Know Your P4$$w0rd (And If I Don't, I Will Guess It...)
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
clasemsi-120306162554-phpapp02.pdf
clasemsi-120306162554-phpapp02.pdfclasemsi-120306162554-phpapp02.pdf
clasemsi-120306162554-phpapp02.pdf
 

Más de Jaime E. Velarde

16 Instrucciones de Subrutinas
16 Instrucciones de Subrutinas16 Instrucciones de Subrutinas
16 Instrucciones de SubrutinasJaime E. Velarde
 
15 Instrucciones Aritmeticas y Logicas
15 Instrucciones Aritmeticas y Logicas15 Instrucciones Aritmeticas y Logicas
15 Instrucciones Aritmeticas y LogicasJaime E. Velarde
 
13 Instrucciones de manejo de bits
13  Instrucciones de manejo de bits13  Instrucciones de manejo de bits
13 Instrucciones de manejo de bitsJaime E. Velarde
 
12 Pórticos de los Atmega
12 Pórticos de los Atmega12 Pórticos de los Atmega
12 Pórticos de los AtmegaJaime E. Velarde
 
11 Instrucciones de Salto de los Atmega
11  Instrucciones de Salto  de los Atmega11  Instrucciones de Salto  de los Atmega
11 Instrucciones de Salto de los AtmegaJaime E. Velarde
 
10 Instrucciones de Transferencia
10  Instrucciones  de Transferencia10  Instrucciones  de Transferencia
10 Instrucciones de TransferenciaJaime E. Velarde
 
08 Memoria de los Atmega164P
08 Memoria de los Atmega164P08 Memoria de los Atmega164P
08 Memoria de los Atmega164PJaime E. Velarde
 

Más de Jaime E. Velarde (12)

20 Portico Serial
20 Portico Serial20 Portico Serial
20 Portico Serial
 
18 Timers
18 Timers18 Timers
18 Timers
 
17 Interrupciones
17 Interrupciones17 Interrupciones
17 Interrupciones
 
16 Instrucciones de Subrutinas
16 Instrucciones de Subrutinas16 Instrucciones de Subrutinas
16 Instrucciones de Subrutinas
 
15 Instrucciones Aritmeticas y Logicas
15 Instrucciones Aritmeticas y Logicas15 Instrucciones Aritmeticas y Logicas
15 Instrucciones Aritmeticas y Logicas
 
13 Instrucciones de manejo de bits
13  Instrucciones de manejo de bits13  Instrucciones de manejo de bits
13 Instrucciones de manejo de bits
 
14 Fusibles Programables
14 Fusibles Programables14 Fusibles Programables
14 Fusibles Programables
 
12 Pórticos de los Atmega
12 Pórticos de los Atmega12 Pórticos de los Atmega
12 Pórticos de los Atmega
 
11 Instrucciones de Salto de los Atmega
11  Instrucciones de Salto  de los Atmega11  Instrucciones de Salto  de los Atmega
11 Instrucciones de Salto de los Atmega
 
10 Instrucciones de Transferencia
10  Instrucciones  de Transferencia10  Instrucciones  de Transferencia
10 Instrucciones de Transferencia
 
08 Memoria de los Atmega164P
08 Memoria de los Atmega164P08 Memoria de los Atmega164P
08 Memoria de los Atmega164P
 
07 Familia Atmega
07 Familia Atmega07 Familia Atmega
07 Familia Atmega
 

Último

TEMA 13. LOS GOBIERNOS DEMOCRÁTICOS (1982-2018)
TEMA 13. LOS GOBIERNOS DEMOCRÁTICOS (1982-2018)TEMA 13. LOS GOBIERNOS DEMOCRÁTICOS (1982-2018)
TEMA 13. LOS GOBIERNOS DEMOCRÁTICOS (1982-2018)jlorentemartos
 
Salvando mi mundo , mi comunidad , y mi entorno
Salvando mi mundo , mi comunidad  , y mi entornoSalvando mi mundo , mi comunidad  , y mi entorno
Salvando mi mundo , mi comunidad , y mi entornoday561sol
 
Amor o egoísmo, esa es la cuestión por definir.pdf
Amor o egoísmo, esa es la cuestión por definir.pdfAmor o egoísmo, esa es la cuestión por definir.pdf
Amor o egoísmo, esa es la cuestión por definir.pdfAlejandrino Halire Ccahuana
 
Cuadernillo de actividades eclipse solar.pdf
Cuadernillo de actividades eclipse solar.pdfCuadernillo de actividades eclipse solar.pdf
Cuadernillo de actividades eclipse solar.pdflizcortes48
 
Apunte de clase Pisos y Revestimientos 3
Apunte de clase Pisos y Revestimientos 3Apunte de clase Pisos y Revestimientos 3
Apunte de clase Pisos y Revestimientos 3Gonella
 
DIDÁCTICA DE LA EDUCACIÓN SUPERIOR- DR LENIN CARI MOGROVEJO
DIDÁCTICA DE LA EDUCACIÓN SUPERIOR- DR LENIN CARI MOGROVEJODIDÁCTICA DE LA EDUCACIÓN SUPERIOR- DR LENIN CARI MOGROVEJO
DIDÁCTICA DE LA EDUCACIÓN SUPERIOR- DR LENIN CARI MOGROVEJOLeninCariMogrovejo
 
historieta materia de ecologías producto
historieta materia de ecologías productohistorieta materia de ecologías producto
historieta materia de ecologías productommartinezmarquez30
 
EJEMPLO MODELO DE PLAN DE REFUERZO ESCOLAR.docx
EJEMPLO MODELO DE PLAN DE REFUERZO ESCOLAR.docxEJEMPLO MODELO DE PLAN DE REFUERZO ESCOLAR.docx
EJEMPLO MODELO DE PLAN DE REFUERZO ESCOLAR.docxFabianValenciaJabo
 
4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docx
4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docx4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docx
4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docxMagalyDacostaPea
 
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...Martin M Flynn
 
MEDIACIÓN INTERNACIONAL MF 1445 vl45.pdf
MEDIACIÓN INTERNACIONAL MF 1445 vl45.pdfMEDIACIÓN INTERNACIONAL MF 1445 vl45.pdf
MEDIACIÓN INTERNACIONAL MF 1445 vl45.pdfJosé Hecht
 
Apunte de clase Pisos y Revestimientos 2
Apunte de clase Pisos y Revestimientos 2Apunte de clase Pisos y Revestimientos 2
Apunte de clase Pisos y Revestimientos 2Gonella
 
PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2
PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2
PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2Eliseo Delgado
 
programa PLAN ANUAL TUTORIA 3° SEC-2024.docx
programa PLAN ANUAL TUTORIA 3° SEC-2024.docxprograma PLAN ANUAL TUTORIA 3° SEC-2024.docx
programa PLAN ANUAL TUTORIA 3° SEC-2024.docxCram Monzon
 
Actividades eclipse solar 2024 Educacion
Actividades eclipse solar 2024 EducacionActividades eclipse solar 2024 Educacion
Actividades eclipse solar 2024 Educacionviviantorres91
 
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE 9-4-24 (1).docx
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE     9-4-24 (1).docx4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE     9-4-24 (1).docx
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE 9-4-24 (1).docxMagalyDacostaPea
 
Actividad transversal 2-bloque 2. Actualización 2024
Actividad transversal 2-bloque 2. Actualización 2024Actividad transversal 2-bloque 2. Actualización 2024
Actividad transversal 2-bloque 2. Actualización 2024Rosabel UA
 

Último (20)

TEMA 13. LOS GOBIERNOS DEMOCRÁTICOS (1982-2018)
TEMA 13. LOS GOBIERNOS DEMOCRÁTICOS (1982-2018)TEMA 13. LOS GOBIERNOS DEMOCRÁTICOS (1982-2018)
TEMA 13. LOS GOBIERNOS DEMOCRÁTICOS (1982-2018)
 
Salvando mi mundo , mi comunidad , y mi entorno
Salvando mi mundo , mi comunidad  , y mi entornoSalvando mi mundo , mi comunidad  , y mi entorno
Salvando mi mundo , mi comunidad , y mi entorno
 
Amor o egoísmo, esa es la cuestión por definir.pdf
Amor o egoísmo, esa es la cuestión por definir.pdfAmor o egoísmo, esa es la cuestión por definir.pdf
Amor o egoísmo, esa es la cuestión por definir.pdf
 
Cuadernillo de actividades eclipse solar.pdf
Cuadernillo de actividades eclipse solar.pdfCuadernillo de actividades eclipse solar.pdf
Cuadernillo de actividades eclipse solar.pdf
 
Apunte de clase Pisos y Revestimientos 3
Apunte de clase Pisos y Revestimientos 3Apunte de clase Pisos y Revestimientos 3
Apunte de clase Pisos y Revestimientos 3
 
DIDÁCTICA DE LA EDUCACIÓN SUPERIOR- DR LENIN CARI MOGROVEJO
DIDÁCTICA DE LA EDUCACIÓN SUPERIOR- DR LENIN CARI MOGROVEJODIDÁCTICA DE LA EDUCACIÓN SUPERIOR- DR LENIN CARI MOGROVEJO
DIDÁCTICA DE LA EDUCACIÓN SUPERIOR- DR LENIN CARI MOGROVEJO
 
Aedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptxAedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptx
 
Unidad 2 | Teorías de la Comunicación | MCDIU
Unidad 2 | Teorías de la Comunicación | MCDIUUnidad 2 | Teorías de la Comunicación | MCDIU
Unidad 2 | Teorías de la Comunicación | MCDIU
 
historieta materia de ecologías producto
historieta materia de ecologías productohistorieta materia de ecologías producto
historieta materia de ecologías producto
 
EJEMPLO MODELO DE PLAN DE REFUERZO ESCOLAR.docx
EJEMPLO MODELO DE PLAN DE REFUERZO ESCOLAR.docxEJEMPLO MODELO DE PLAN DE REFUERZO ESCOLAR.docx
EJEMPLO MODELO DE PLAN DE REFUERZO ESCOLAR.docx
 
4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docx
4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docx4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docx
4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docx
 
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...
DIGNITAS INFINITA - DIGNIDAD HUMANA; Declaración del dicasterio para la doctr...
 
MEDIACIÓN INTERNACIONAL MF 1445 vl45.pdf
MEDIACIÓN INTERNACIONAL MF 1445 vl45.pdfMEDIACIÓN INTERNACIONAL MF 1445 vl45.pdf
MEDIACIÓN INTERNACIONAL MF 1445 vl45.pdf
 
Acuerdo segundo periodo - Grado Septimo.pptx
Acuerdo segundo periodo - Grado Septimo.pptxAcuerdo segundo periodo - Grado Septimo.pptx
Acuerdo segundo periodo - Grado Septimo.pptx
 
Apunte de clase Pisos y Revestimientos 2
Apunte de clase Pisos y Revestimientos 2Apunte de clase Pisos y Revestimientos 2
Apunte de clase Pisos y Revestimientos 2
 
PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2
PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2
PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2
 
programa PLAN ANUAL TUTORIA 3° SEC-2024.docx
programa PLAN ANUAL TUTORIA 3° SEC-2024.docxprograma PLAN ANUAL TUTORIA 3° SEC-2024.docx
programa PLAN ANUAL TUTORIA 3° SEC-2024.docx
 
Actividades eclipse solar 2024 Educacion
Actividades eclipse solar 2024 EducacionActividades eclipse solar 2024 Educacion
Actividades eclipse solar 2024 Educacion
 
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE 9-4-24 (1).docx
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE     9-4-24 (1).docx4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE     9-4-24 (1).docx
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE 9-4-24 (1).docx
 
Actividad transversal 2-bloque 2. Actualización 2024
Actividad transversal 2-bloque 2. Actualización 2024Actividad transversal 2-bloque 2. Actualización 2024
Actividad transversal 2-bloque 2. Actualización 2024
 

Ejercicio 02 Tablas

  • 1. SISTEMAS MICROPROCESADOS – Ejercicio para crear tablas de datos en la FLASH Pag. 1 EJERCICIO PARA LLENAR LOCALIDADES DE LA SRAM, CON EL CONTENIDO DE TABLAS QUE SE CREAN EN LA MEMORIA DEL PROGRAMA Desarrollar un programa que permita llenar las primeras localidades de la SRAM con los códigos ASCII correspondiente a las letras del siguiente texto: ESCUELA POLITECNICA NACIONAL Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
  • 2. SISTEMAS MICROPROCESADOS – Ejercicio para crear tablas de datos en la FLASH Pag. 2 PRIMERA SOLUCIÓN Esta solución implica que el programa genere los códigos ASCII del texto, mediante el direccionamiento inmediato para luego almacenarlos 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 dirección de la SRAM, a la que se la etiqueta como DATOS. Y el registro R16, al que se lo etiqueta como AUX, se lo utiliza para generar los códigos. .NOLIST .INCLUDE "m164pdef.inc" .LIST ; .EQU NCOD = 28 ; .DEF AUX = R16 ; .DSEG DATOS: .BYTE NCOD ; .CSEG LDI XL,LOW(DATOS) LDI XH,HIGH(DATOS) LDI AUX,'E' ST X+,AUX LDI AUX,'S' ST X+,AUX LDI AUX,'C' ST X+,AUX LDI AUX,'U' ST X+,AUX LDI AUX,'E' ST X+,AUX LDI AUX,'L' ST X+,AUX LDI AUX,'A' ST X+,AUX LDI AUX,' ' ST X+,AUX LDI AUX,'P' ST X+,AUX LDI AUX,'O' ST X+,AUX LDI AUX,'L' ST X+,AUX LDI AUX,'I' ST X+,AUX LDI AUX,'T' ST X+,AUX LDI AUX,'E' Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
  • 3. SISTEMAS MICROPROCESADOS – Ejercicio para crear tablas de datos en la FLASH Pag. 3 ST X+,AUX LDI AUX,'C' ST X+,AUX LDI AUX,'N' ST X+,AUX LDI AUX,'I' ST X+,AUX LDI AUX,'C' ST X+,AUX LDI AUX,'A' ST X+,AUX LDI AUX,' ' ST X+,AUX LDI AUX,'N' ST X+,AUX LDI AUX,'A' ST X+,AUX LDI AUX,'C' ST X+,AUX LDI AUX,'I' ST X+,AUX LDI AUX,'O' ST X+,AUX LDI AUX,'N' ST X+,AUX LDI AUX,'A' ST X+,AUX LDI AUX,'L' ST X+,AUX ; FIN: RJMP FIN ; .EXIT ; FIN DEL MODULO FUENTE SEGUNDA SOLUCIÓN Como se puede apreciar la primera solución no es una solución eficiente. Lo que lleva al desarrollo de esta segunda solución, que consiste en un lazo de repetición donde el programa no es el que genera los códigos, sino que los lee desde la memoria del programa y los almacena en la SRAM. Para implementar el algoritmo de esta solución, se utiliza al Puntero X para almacenar los códigos en la SRAM y al Puntero Z (registros R30 y R31) para leerlos desde la memoria del programa. La inicialización de este último puntero debe considerar que los contenidos de la memoria del programa son de 16 bits, es decir que pueden contener dos códigos en cada localidad. El registro R16 se lo utiliza para la transferencia del código de la memoria del programa hacia la SRAM y R17 es el contador para controlar el lazo de repetición; es por eso, que se los etiqueta como AUX y CONTADOR. Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
  • 4. SISTEMAS MICROPROCESADOS – Ejercicio para crear tablas de datos en la FLASH Pag. 4 La tabla de códigos ASCII que se crea en la memoria del programa, se la consigue mediante el uso de la Directiva DB que Define Byte o Bytes Constantes en la Memoria del Programa o en la EEPROM . .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 ; TABLA: .DB 0x45 .DB 0x53 .DB 0x43 .DB 0x55 .DB 0x45 .DB 0x4C .DB 0x41 .DB 0x20 .DB 0x50 .DB 0x4F .DB 0x4C .DB 0x49 .DB 0x54 .DB 0x45 .DB 0x43 .DB 0x4E .DB 0x49 .DB 0x43 .DB 0x41 .DB 0x20 .DB 0x4E Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
  • 5. SISTEMAS MICROPROCESADOS – Ejercicio para crear tablas de datos en la FLASH Pag. 5 .DB 0x41 .DB 0x43 .DB 0x49 .DB 0x4F .DB 0x4E .DB 0x41 .DB 0x4C ; .EXIT ; FIN DEL MODULO FUENTE El resultado del ensamblado no tiene errores, pero si una serie de mensajes de atención (WARNING) en las líneas DB .LIST ; .EQU NCOD = 28 ; .DEF AUX = R16 .DEF CONTADOR = R17 ; .DSEG 000100 DATOS: .BYTE NCOD ; .CSEG 000000 e0a0 LDI XL,LOW(DATOS) 000001 e0b1 LDI XH,HIGH(DATOS) 000002 e1e4 LDI ZL,LOW(TABLA<<1) 000003 e0f0 LDI ZH,HIGH(TABLA<<1) 000004 e11c LDI CONTADOR,NCOD 000005 9105 LAZO: LPM AUX,Z+ 000006 930d ST X+,AUX 000007 951a DEC CONTADOR 000008 f7e1 BRNE LAZO ; 000009 cfff FIN: RJMP FIN ; C:........asm(36): warning: .cseg .db misalignment - padding zero byte 00000a 0045 TABLA: .DB 0x45 C: ........asm(37): warning: .cseg .db misalignment - padding zero byte 00000b 0053 .DB 0x53 C: ........asm(38): warning: .cseg .db misalignment - padding zero byte 00000c 0043 .DB 0x43 C: ........asm(39): warning: .cseg .db misalignment - padding zero byte 00000d 0055 .DB 0x55 C: ........asm(40): warning: .cseg .db misalignment - padding zero byte 00000e 0045 .DB 0x45 C: ........asm(41): warning: .cseg .db misalignment - padding zero byte 00000f 004c .DB 0x4C C: ........asm(42): warning: .cseg .db misalignment - padding zero byte 000010 0041 .DB 0x41 C: ........asm(43): warning: .cseg .db misalignment - padding zero byte 000011 0020 .DB 0x20 C: ........asm(44): warning: .cseg .db misalignment - padding zero byte 000012 0050 .DB 0x50 C: ........asm(45): warning: .cseg .db misalignment - padding zero byte 000013 004f .DB 0x4F C: ........asm(46): warning: .cseg .db misalignment - padding zero byte 000014 004c .DB 0x4C C: ........asm(47): warning: .cseg .db misalignment - padding zero byte 000015 0049 .DB 0x49 C: ........asm(48): warning: .cseg .db misalignment - padding zero byte 000016 0054 .DB 0x54 C: ........asm(49): warning: .cseg .db misalignment - padding zero byte Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
  • 6. SISTEMAS MICROPROCESADOS – Ejercicio para crear tablas de datos en la FLASH Pag. 6 000017 0045 .DB 0x45 C: ........asm(50): warning: .cseg .db misalignment - padding zero byte 000018 0043 .DB 0x43 C: ........asm(51): warning: .cseg .db misalignment - padding zero byte 000019 004e .DB 0x4E C: ........asm(52): warning: .cseg .db misalignment - padding zero byte 00001a 0049 .DB 0x49 C: ........asm(53): warning: .cseg .db misalignment - padding zero byte 00001b 0043 .DB 0x43 C: ........asm(54): warning: .cseg .db misalignment - padding zero byte 00001c 0041 .DB 0x41 C: ........asm(55): warning: .cseg .db misalignment - padding zero byte 00001d 0020 .DB 0x20 C: ........asm(56): warning: .cseg .db misalignment - padding zero byte 00001e 004e .DB 0x4E C: ........asm(57): warning: .cseg .db misalignment - padding zero byte 00001f 0041 .DB 0x41 C: ........asm(58): warning: .cseg .db misalignment - padding zero byte 000020 0043 .DB 0x43 C: ........asm(59): warning: .cseg .db misalignment - padding zero byte 000021 0049 .DB 0x49 C: ........asm(60): warning: .cseg .db misalignment - padding zero byte 000022 004f .DB 0x4F C: ........asm(61): warning: .cseg .db misalignment - padding zero byte 000023 004e .DB 0x4E C: ........asm(62): warning: .cseg .db misalignment - padding zero byte 000024 0041 .DB 0x41 C: ........asm(63): warning: .cseg .db misalignment - padding zero byte 000025 004c .DB 0x4C Los mensajes de atención indican que los bytes constantes se los acopla con un byte de cero, para no perder el alineamiento. Por lo tanto, para que sea solución al problema es necesario incluir dentro del lazo de repetición, un incremento del Puntero Z mediante el incremento del registro ZL (R30), como se indica a continuación: LAZO: LPM AUX,Z+ INC ZL ST X+,AUX DEC CONTADOR BRNE LAZO Esta modificación a la solución falla, cuando la tabla de datos que se crea se encuentra en localidades donde cambia el bit 7 de la dirección. TERCERA SOLUCIÓN Se puede solucionar la dificultad de crear la tabla en forma correcta mediante la utilización de la Directiva DW que Define Word o Palabras Constantes en la Memoria del Programa o en la EEPROM. .NOLIST .INCLUDE "m164pdef.inc" .LIST ; .EQU NCOD = 28 ; .DEF AUX = R16 Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
  • 7. SISTEMAS MICROPROCESADOS – Ejercicio para crear tablas de datos en la FLASH Pag. 7 .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 0xF8 TABLA: .DW 0x4553 .DW 0x4355 .DW 0x454C .DW 0x4120 .DW 0x504F .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 Módulo Fuente ya no tiene mensajes de atención ni errores, pero no es la solución al problema. Porque en el lazo de repetición se lee primero el byte par y luego el impar; es decir primero se lee el código ASCII de la S y luego el de la E y así sucesivamente. .ORG 0xF8 0000f8 4553 TABLA: .DW 0x4553 0000f9 4355 .DW 0x4355 0000fa 454c .DW 0x454C 0000fb 4120 .DW 0x4120 0000fc 504f .DW 0x504F 0000fd 4c49 .DW 0x4C49 0000fe 5445 .DW 0x5445 0000ff 434e .DW 0x434E 000100 4943 .DW 0x4943 000101 4120 .DW 0x4120 000102 4e41 .DW 0x4E41 000103 4349 .DW 0x4349 000104 4f4e .DW 0x4F4E Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
  • 8. SISTEMAS MICROPROCESADOS – Ejercicio para crear tablas de datos en la FLASH Pag. 8 000105 414c .DW 0x414C La corrección de la tabla en la solución será intercambiar los bytes como se muestra a continuación: .ORG 0xF8 TABLA: .DW 0x5345 .DW 0x5543 .DW 0x4C45 .DW 0x2041 .DW 0x4F50 .DW 0x494C .DW 0x4554 .DW 0x4E43 .DW 0x4349 .DW 0x2041 .DW 0x414E .DW 0x4943 .DW 0x4E4F .DW 0x4C41 .ORG 0xF8 0000f8 5345 TABLA: .DW 0x5345 0000f9 5543 .DW 0x5543 0000fa 4c45 .DW 0x4C45 0000fb 2041 .DW 0x2041 0000fc 4f50 .DW 0x4F50 0000fd 494c .DW 0x494C 0000fe 4554 .DW 0x4554 0000ff 4e43 .DW 0x4E43 000100 4349 .DW 0x4349 000101 2041 .DW 0x2041 000102 414e .DW 0x414E 000103 4943 .DW 0x4943 000104 4e4f .DW 0x4E4F 000105 4c41 .DW 0x4C41 También se puede crear la tabla con menos líneas. TABLA: .DW 0x5345, 0x5543, 0x4C45, 0x2041, 0x4F50, 0x494C .DW 0x4554, 0x4E43, 0x4349, 0x2041, 0x414E .DW 0x4943, 0x4E4F, 0x4C41 0000f8 5345 0000f9 5543 0000fa 4c45 0000fb 2041 0000fc 4f50 0000fd 494c TABLA: .DW 0x5345,0x5543,0x4C45,0x2041,0x4F50,0x494C 0000fe 4554 0000ff 4e43 000100 4349 000101 2041 000102 414e .DW 0x4554,0x4E43,0x4349,0x2041,0x414E 000103 4943 000104 4e4f 000105 4c41 .DW 0x4943, 0x4E4F,0x4C41 Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
  • 9. SISTEMAS MICROPROCESADOS – Ejercicio para crear tablas de datos en la FLASH Pag. 9 Regresando a la segunda solución, la creación de la tabla se puede apreciar en forma clara si se usa los mismos símbolos de las letras y del espacio en blanco entre comillas. TABLA: .DB "E" .DB "S" .DB "C" .DB "U" .DB "E" .DB "L" .DB "A" .DB "" .DB "P" .DB "O" .DB "L" .DB "I" .DB "T" .DB "E" .DB "C" .DB "N" .DB "I" .DB "C" .DB "A" .DB "" .DB "N" .DB "A" .DB "C" .DB "I" .DB "O" .DB "N" .DB "A" .DB "L" Pero, se mantienen los mensajes de atención ya analizados. C: .......asm(34): warning: .cseg .db misalignment - padding zero byte 00000a 0045 TABLA: .DB “E” C: .......asm(35): warning: .cseg .db misalignment - padding zero byte 00000b 0053 .DB “S” C: .......asm(36): warning: .cseg .db misalignment - padding zero byte 00000c 0043 .DB “C” C: .......asm(37): warning: .cseg .db misalignment - padding zero byte 00000d 0055 .DB “U” C: .......asm(38): warning: .cseg .db misalignment - padding zero byte 00000e 0045 .DB “E” C: .......asm(39): warning: .cseg .db misalignment - padding zero byte 00000f 004c .DB “L” C: .......asm(40): warning: .cseg .db misalignment - padding zero byte 000010 0041 .DB “A” C: .......asm(41): warning: .cseg .db misalignment - padding zero byte 000011 0020 .DB “ ” C: .......asm(42): warning: .cseg .db misalignment - padding zero byte 000012 0050 .DB “P” C: .......asm(43): warning: .cseg .db misalignment - padding zero byte 000013 004f .DB “O” C: .......asm(44): warning: .cseg .db misalignment - padding zero byte 000014 004c .DB “L” Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
  • 10. SISTEMAS MICROPROCESADOS – Ejercicio para crear tablas de datos en la FLASH Pag. 10 C: .......asm(45): warning: .cseg .db misalignment - padding zero byte 000015 0049 .DB “I” C: .......asm(46): warning: .cseg .db misalignment - padding zero byte 000016 0054 .DB “T” C: .......asm(47): warning: .cseg .db misalignment - padding zero byte 000017 0045 .DB “E” C: .......asm(48): warning: .cseg .db misalignment - padding zero byte 000018 0043 .DB “C” C: .......asm(49): warning: .cseg .db misalignment - padding zero byte 000019 004e .DB “N” C: .......asm(50): warning: .cseg .db misalignment - padding zero byte 00001a 0049 .DB “I” C: .......asm(51): warning: .cseg .db misalignment - padding zero byte 00001b 0043 .DB “C” C: .......asm(52): warning: .cseg .db misalignment - padding zero byte 00001c 0041 .DB “A” C: .......asm(53): warning: .cseg .db misalignment - padding zero byte 00001d 0020 .DB “ ” C: .......asm(54): warning: .cseg .db misalignment - padding zero byte 00001e 004e .DB “N” C: .......asm(55): warning: .cseg .db misalignment - padding zero byte 00001f 0041 .DB “A” C: .......asm(56): warning: .cseg .db misalignment - padding zero byte 000020 0043 .DB “C” C: .......asm(57): warning: .cseg .db misalignment - padding zero byte 000021 0049 .DB “I” C: .......asm(58): warning: .cseg .db misalignment - padding zero byte 000022 004f .DB “O” C: .......asm(59): warning: .cseg .db misalignment - padding zero byte 000023 004e .DB “N” C: .......asm(60): warning: .cseg .db misalignment - padding zero byte 000024 0041 .DB “A” C: .......asm(61): warning: .cseg .db misalignment - padding zero byte 000025 004c .DB “L” Se puede también disminuir el número de líneas para crear la tabla, donde se eliminan los mensajes de atención en dos de esas líneas y se mantiene en las otras dos. Esto se debe, a que las primeras tienen un número par de caracteres y las otras no. TABLA: .DB "E","S","C","U","E","L","A"," " .DB "P","O","L","I","T","E","C","N","I","C","A"," " .DB "N","A","C","I","O","N","A" .DB "L" 0000f8 5345 0000f9 5543 0000fa 4c45 0000fb 2041 TABLA: .DB "E","S","C","U","E","L","A"," " 0000fc 4f50 0000fd 494c 0000fe 4554 0000ff 4e43 000100 4349 000101 2041 .DB "P","O","L","I","T","E","C","N","I","C","A"," " 000102 414e 000103 4943 000104 4e4f C: .......asm(37): warning: .cseg .db misalignment - padding zero byte 000105 0041 .DB "N","A","C","I","O","N","A" C: .......asm(38): warning: .cseg .db misalignment - padding zero byte 000106 004c .DB "L" Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
  • 11. SISTEMAS MICROPROCESADOS – Ejercicio para crear tablas de datos en la FLASH Pag. 11 Por eso, se debe tener cuidado de crear tablas de bytes en un número par, para evitar que se acoplen con byte cero debido al alineamiento. TABLA: .DB "E","S","C","U","E","L","A"," " .DB "P","O","L","I","T","E","C","N","I","C","A"," " .DB "N","A","C","I","O","N","A","L" 0000f8 5345 0000f9 5543 0000fa 4c45 0000fb 2041 TABLA: .DB "E","S","C","U","E","L","A"," " 0000fc 4f50 0000fd 494c 0000fe 4554 0000ff 4e43 000100 4349 000101 2041 .DB "P","O","L","I","T","E","C","N","I","C","A"," " 000102 414e 000103 4943 000104 4e4f 000105 4c41 .DB "N","A","C","I","O","N","A","L" También se puede agrupar los caracteres dentro de comillas y mejorar la presentación. TABLA: .DB "ESCUELA " .DB "POLITECNICA " .DB "NACIONAL" 0000f8 5345 0000f9 5543 0000fa 4c45 0000fb 2041 TABLA: .DB "ESCUELA " 0000fc 4f50 0000fd 494c 0000fe 4554 0000ff 4e43 000100 4349 000101 2041 .DB "POLITECNICA " 000102 414e 000103 4943 000104 4e4f 000105 4c41 .DB "NACIONAL" Por último, para este caso se puede tener una solo línea con la que se crea toda la tabla. TABLA: .DB "ESCUELA POLITECNICA NACIONAL" 0000f8 5345 0000f9 5543 0000fa 4c45 0000fb 2041 0000fc 4f50 0000fd 494c 0000fe 4554 0000ff 4e43 000100 4349 000101 2041 000102 414e 000103 4943 000104 4e4f 000105 4c41 TABLA: .DB "ESCUELA POLITECNICA NACIONAL" Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
  • 12. SISTEMAS MICROPROCESADOS – Ejercicio para crear tablas de datos en la FLASH Pag. 12 Únicamente cambiando la línea que contiene el texto en comillas y el contador, este módulo fuente sirve para llenar las primeras localidades de la SRAM con los códigos ASCII del texto: FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICAS .NOLIST .INCLUDE "m164pdef.inc" .LIST ; .EQU NCOD = 47 ; .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 0xF8 TABLA: .DB "FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICAS", 0 .LIST ; .EQU NCOD = 47 ; .DEF AUX = R16 .DEF CONTADOR = R17 ; .DSEG 000060 DATOS: .BYTE NCOD ; .CSEG 000000 e6a0 LDI XL,LOW(DATOS) 000001 e0b0 LDI XH,HIGH(DATOS) 000002 efe0 LDI ZL,LOW(TABLA<<1) 000003 e0f1 LDI ZH,HIGH(TABLA<<1) 000004 e311 LDI CONTADOR,NCOD 000005 9105 LAZO: LPM AUX,Z+ 000006 930d ST X+,AUX 000007 951a DEC CONTADOR 000008 f7e1 BRNE LAZO ; 000009 cfff FIN: RJMP FIN Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
  • 13. SISTEMAS MICROPROCESADOS – Ejercicio para crear tablas de datos en la FLASH Pag. 13 .ORG $F8 0000f8 4146 0000f9 5543 0000fa 544c 0000fb 4441 0000fc 4420 0000fd 2045 0000fe 4e49 0000ff 4547 000100 494e 000101 5245 000102 4149 000103 4520 000104 454c 000105 5443 000106 4952 000107 4143 000108 5920 000109 4520 00010a 454c 00010b 5443 00010c 4f52 00010d 494e 00010e 4143 00010f 0053 TABLA .DB "FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICAS",0 CUARTA SOLUCIÓN En esta solución, se consigue al momento de ensamblar el número de caracteres que conforman el texto. Esto se hace mediante el uso de una etiqueta que indique donde termina la tabla, a la que se le resta la etiqueta del inicio para conocer cuantas localidades del programa ocupa. Este resultado multiplicado por dos será el número de caracteres que es el valor inicial del contador para control del lazo de repetición. .NOLIST .INCLUDE "m164pdef.inc" .LIST ; .EQU NCOD = (FINTBL-TABLA)*2 ; .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 Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
  • 14. SISTEMAS MICROPROCESADOS – Ejercicio para crear tablas de datos en la FLASH Pag. 14 ; FIN: RJMP FIN ; .ORG 0xF8 TABLA: .DB "ESTE CURSO ES EL MAS CHEVERE DE TODAS LAS CARRERAS" FINTBL: .DB 0,0 ; .EXIT ; FIN DEL MODULO FUENTE El ensamblado emite un solo mensaje de atención, que no afecta al funcionamiento del programa; porque únicamente indica que la etiqueta FINTBL utilizada para calcular el número de caracteres no está definida o está referida más adelante. .LIST ; .EQU NCOD = (FINTBL-TABLA)*2 ; .DEF AUX = R16 .DEF CONTADOR = R17 ; .DSEG 000100 DATOS: .BYTE NCOD ; .CSEG 000000 e0a0 LDI XL,LOW(DATOS) 000001 e0b1 LDI XH,HIGH(DATOS) 000002 efe0 LDI ZL,LOW(TABLA<<1) 000003 e0f1 LDI ZH,HIGH(TABLA<<1) 000004 e312 LDI CONTADOR,NCOD 000005 9105 LAZO: LPM AUX,Z+ 000006 930d ST X+,AUX 000007 951a DEC CONTADOR 000008 f7e1 BRNE LAZO ; 000009 cfff FIN: RJMP FIN ; .ORG 0xF8 0000f8 5345 0000f9 4554 0000fa 4320 0000fb 5255 0000fc 4f53 0000fd 4520 0000fe 2053 0000ff 4c45 000100 4d20 000101 5341 000102 4320 000103 4548 000104 4556 000105 4552 000106 4420 000107 2045 000108 4f54 000109 4144 00010a 2053 00010b 414c 00010c 2053 00010d 4143 00010e 5252 00010f 5245 000110 5341 TABLA: .DB "ESTE CURSO ES EL MAS CHEVERE DE TODAS LAS CARRERAS" 000111 0000 FINTBL: .DB 0,0 Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
  • 15. SISTEMAS MICROPROCESADOS – Ejercicio para crear tablas de datos en la FLASH Pag. 15 QUINTA SOLUCIÓN La solución anterior necesita que la tabla de datos sea de un número par de bytes. En caso de que el texto este conformado de un número impar de caracteres, se puede utilizar esta nueva solución que no se realiza a base a un lazo de repetición controlado por un contador; sino, a base a un lazo de repetición que termina cuando se identifica un carácter especial que se ubica al final del texto. El carácter especial escogido para este ejemplo es el símbolo “$” .NOLIST .INCLUDE "m164pdef.inc" .LIST ; .EQU NCOD = (FINTBL-TABLA)*2 ; .DEF AUX = R16 ; .DSEG DATOS: .BYTE NCOD ; .CSEG LDI XL,LOW(DATOS) LDI XH,HIGH(DATOS) LDI ZL,LOW(TABLA<<1) LDI ZH,HIGH(TABLA<<1) LAZO: LPM AUX,Z+ CPI AUX,'$' BREQ FIN ST X+,AUX RJMP LAZO ; FIN: RJMP FIN ; .ORG 0xF8 TABLA: .DB "FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICAS$" FINTBL: .DB 0,0 ; .EXIT ; FIN DEL MODULO FUENTE Al ensamblar se emiten un mensaje de atención, que no afectan al funcionamiento del programa. EJERCICIO PARA CREAR VARIAS TABLAS EN DISTINTAS LOCALIDADES DE LA SRAM Programa para llenar en las primeras localidades de la SRAM con los códigos ASCII de las letras y signos que forman los siguientes tres mensajes, separándolos entre ellos por cuatro localidades. Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
  • 16. SISTEMAS MICROPROCESADOS – Ejercicio para crear tablas de datos en la FLASH Pag. 16 ESCUELA POLITECNICA NACIONAL FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICAS ESTE CURSO ES EL MAS CHEVERE DE TODAS LAS CARRERAS La ejecución del ensamblado de este programa se dificulta, por la obtención del número de caracteres de los textos en base al número de localidades que ocupan las tablas; debido a que los mensajes de atención se convierten en mensajes de error. Esto se soluciona si trasladamos las líneas donde se definen los números de caracteres y el Segmento de Datos, después de las líneas que crean las tablas; como se observa a continuación: .NOLIST .INCLUDE "m164pdef.inc" .LIST ; .DEF AUX = R16 .DEF CONTADOR = R17 ; .CSEG LDI XL,LOW(DATOS1) LDI XH,HIGH(DATOS1) LDI ZL,LOW(TBL1<<1) LDI ZH,HIGH(TBL1<<1) LDI CONTADOR,NCOD1 LAZO1: LPM AUX,Z+ ST X+,AUX DEC CONTADOR BRNE LAZO1 ; LDI XL,LOW(DATOS2) LDI XH,HIGH(DATOS2) LDI ZL,LOW(TBL2<<1) LDI ZH,HIGH(TBL2<<1) LDI CONTADOR,NCOD2 LAZO2: LPM AUX,Z+ ST X+,AUX DEC CONTADOR BRNE LAZO2 ; LDI XL,LOW(DATOS3) LDI XH,HIGH(DATOS3) LDI ZL,LOW(TBL3<<1) LDI ZH,HIGH(TBL3<<1) LDI CONTADOR,NCOD3 LAZO3: LPM AUX,Z+ ST X+,AUX DEC CONTADOR BRNE LAZO3 ; Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información
  • 17. SISTEMAS MICROPROCESADOS – Ejercicio para crear tablas de datos en la FLASH Pag. 17 FIN: RJMP FIN ; .ORG 0xF8 TBL1: .DB "ESCUELA POLITECNICA NACIONAL" TBL2: .DB "FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICAS",0 TBL3: .DB "ESTE CURSO ES EL MAS CHEVERE DE TODAS LAS CARRERAS" FTBL: .DB 0,0 ; .EQU NCOD1 = (TBL2-TBL1)*2 .EQU NCOD2 = (TBL3-TBL2)*2 - 1 .EQU NCOD3 = (FTBL-TBL3)*2 ; .DSEG DATOS1: .BYTE NCOD1 SEPAR1: .BYTE 4 DATOS2: .BYTE NCOD2 SEPAR2: .BYTE 4 DATOS3: .BYTE NCOD3 ; .EXIT ; FIN DEL MODULO FUENTE Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información