• 1− Obtener el ordinograma, comentarios y hacer el ensayo para varios valores de operandos; de los siguientes programas. a) CLC b) NOP c) LDA # 03 SED SED AND # 0F LDA # 03 LDA # 12 STA 32 ADC # 09 STA 1A BRK STA 0F LDA # 07 BRK STA 1B LDA 1A CLC ADC 1B STA 1C BRK • 2− Poner a 1 el bit de mas peso de la posición primera de la pagina cero, sin alterar el resto de los bits y depositar el resultado en la posición 1B de la misma pagina. • 3− Obtener el ordinograma y concluir lo que hace el siguiente programa en mnemónico. • NOP LDA 40 CMP 41 BCS 02 LDA 41 STA 42 BRK • 4− Realizar un programa de control de tiempo o retardo, consistente en decrementar 99 veces el registro X de forma que por cada decremento de este el registro Y lo hace 99 veces. Además esta temporizaron se repetirá el nº de lista veces, usando la posición de memoria 100 + nº de lista. • Dibujar ordinograma, ensayar y medir el tiempo tanto en el ensamblador como en el sistema de desarrollo. 1 • 5− Escribir el programa para el siguiente ordinograma, y experimentarlo en el sistema de desarrollo, sobre la placa de E/S. CONFG. PB SALIDA ENCENDER LED TEMPORIZACION APAGAR LED TEMPORIZAR SOLUCION DE LOS EJERCICIOS 1º − Ejercicio: • CLC SED LDA #03 ADC #09 STA 0F BRK • Primero pone el flag C del registro de estado a cero. • Segundo pone el a uno el flag D del registro de estado. • Luego carga en el acumulador A el dato 03. • A continuación hace una realiza una suma entre; el contenido del acumulador más él dato 09 y más el carry, el resultado se guarda en el acumulador. • Ya acabando se guarda el contenido del acumulador en la posición de memoria 0F de la pagina cero. • Por ultimo finaliza el programa. • NOP SED 2 LDA #12 STA 1A LDA #07 STA 1B LDA 1A CLC ADC 1B STA 1C BRK • La primera instrucción no opera, es una perdida de 2 microsegundos. • Después pone a uno el flag D del registro de estado. • Cargamos en el acumulador el dato 12 en decimal. • El contenido de acumulador pasa a gravarse en la posición 1A de la pagina cero, que este caso el contenido es doce. • Cargamos en el acumulador el dato 07 en decimal. • Y se carga el contenido del acumulador a la posición 1B de la pagina cero. • Cargamos otra vez en el acumulador el contenido de la posición 1A de la pagina cero. • Pone a cero el flag C del registro de estado; es decir pone a cero el carry. • Realiza una suma entre el contenido del acumulador mas el contenido de la posicion 1B de la pagina cero y más el carry, y el resultado lo guarda en el acumulador. • Grava el contenido del acumulador en la posición 1C de la pagina cero, que en este caso el resultado de la suma. • Finaliza el programa. • LDA 31 AND #0F STA 32 BRK • Primero carga en el acumulador el contenido de la posición 31 de la pagina cero. • Luego realiza una multiplicación lógica entre el contenido del acumulador, que en 3 este caso es el contenido de la posición 31 y el dato 0f. • Posteriormente gravamos el contenido del acumulador, que es el resultado de la multiplicación en la posición 32 de la pagina cero. • Por ultimo finaliza el programa. 2º − Ejercicio: LDA 01 ORA #$80 STA 1B BRK 3º − Ejercicio: NOP LDA 40 CMP 41 BCS 02 LDA 41 STA 42 BRK Este programa inicialmente tiene una orden que no opera, es decir que no hace nada se pone para perder 2 microsegundos de tiempo. Pero lo que realmente hace este programa es comparar el contenido de las posiciones de memoria 40 y 41, ambas de la pagina cero; Y si el contenido de la posición 40 es mayor o igual que el de la posición 41, entonces grava el contenido del acumulador, que en este caso es el contenido de la posición 40, lo grava a la posición 42, y finaliza el programa. Pero si el contenido de la posición 40 es menor que el de la posición 41, entonces grava en el acumulador el contenido de la posición 41 y lo pasa a la posición 42, y luego finaliza. 4º − Ejercicio: LDA # 00 STA 0103 lazo 3 LDX # 99 lazo 2 LDY # 99 4 lazo 1 DEY CPY # 00 BNE lazo 1 DEX CPX # 00 BNE lazo 2 INC 0103 LDA 0103 CMP # 03 BNE lazo 3 BRK 5º − Ejercicio: LDA #$ FF STA A002 LDY #$ FF STY A000 LDX #$ FF JSR lazo 1 DEY LDA # 00 CPX # 00 STA A000 BNE lazo 1 JSR RTS JMP diec. 1 5