Taller de electrónica

Anuncio
• 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
Descargar