hernaldog@gmail.com
Visita mi Blog



 

 

 

ASM de la SNES ONLINE

Desafos para ASM 65816
Ver aqu las Reglas del juego.

 

 

Alumnos y sus Estrellas

  Vicio
  Kaosoft
  Elyelma
  Ragnarock
  HexPluSoft
  Arkis

 

Desafos
Nivel Fcil (1 estrella por Desafo)

Desafo 1.

Basado en Log de Clase 1.

Explicar: 

1. LDA $1234
2. LDA #$458
3. LDX $1
4. STY #$ 85

 

Con este tipo de respuesta:

Setear registro ____ (X/Y/A)??  a modo de ____ (8/16 bits) ??  para esto hay que _______ (reset/set)?? FLAG ___ (z,c,i,m,x) ?? de P.

(Ustedes deben llenar ____ )

Respuesta

Desafo 2.

Escribe las instrucciones respectivas:

1. Si quiero cargar en A el valor 35.

2. Si quiero almacenar en X el valor que esta dentro de la direccin $1234.

3. Si quiero almacenar en Y el valor que esta dentro de $FF48FC. (Aqu hay 2 formas posibles, una fcil de una sola instruccin y otra usando A, a ver si puedes hacer las 2 formas)
 

Respuesta

Desafo 3.

1. Es posible hacer esto?

SEP #$20
LDA $1234

2. y esto?

LDA #$05
STA $811234

Respuesta

Desafo 4.

1. Que sucede con A cuando esta en modo de 8 bits y en modo de 16 bits para estos 2 casos : LDA $1234 y LDA #$1234

2. Cual es el Largo de un banco (en bytes) y de un Offset? Cuantas direcciones en TOTAL en la memoria podemos tener?
 

Respuesta

Desafo 5.

Hacer un trozo de cdigo que haga esto:

1. Quiero meter el valor 100 a la pila, luego meter 20 a $500 y luego sacar lo de la pila y dejarlo finalmente en A.

2. Que saque de la direccin $556C un valor y lo deje en X, que a ese valor le sume 4 y el resultado lo deje en $556D. (que los bancos no te importen)
 

Respuesta

Desafo 6.

Detectar los 2 errores que hay en este trozo de cdigo:
Suponer que en $80AABB esta el valor 0x1234 y que este cdigo empieza a ejecutarse a partir de la instruccin  $01552C.

SEP #$20       -> aqu estamos en $01552C
LDA #$02
LDY $80AABB
PHK
PHA
STX #$A1F234
PLX x=02
PLY y=01

Como quedan A, X, Y al final?
 

Respuesta

Desafo 7.

1. Al hacer REP #$30 lo que hago es:
____ (cargar/almacenar/setear/resetear) ____(X/Y/A) para que se pueda ____(almacenar/cargar/setear/resetear)
____ (datos/valores/direcciones/offsets) en modo de _____(8/16/24) bits.

2. Se podra deducir alguna "regla" a partir de esta sentencia?
            SR[30axy-20a-10xy]
 

Respuesta

 
Medio (2 estrellas)

Desafo 1.

Hacer un trozo de cdigo que permita: Meter en la Pila  (X + Y - A)*16 
pero debes considerar que la Pila esta LLENA.
 

Respuesta

Desafo 2.

Si tengo esto en la pila

    | 0C |
    | 0A |
    | 04 |
    --------

Hacer un solo trozo de cdigo que permita dejar la Pila as:

    | 0A |
    | 04 |
    | 0C |
    --------

y luego que la deje as:

   | 04      |
   | 0C + X |  -> el resultado de C0 + lo que tiene el registro X
   | 0A      |
    ------------  

Respuesta

Desafo 3.

Escribir un trozo de cdigo que haga esto:

 0xB  X   0xA = Resultado1
 0X05  X   0X04 = Resultado2

hacer luego la divisin Resultado1/Resultado2, luego al Resto sumarle 0x7 y dejarlo en X
y al Cuociente restarle 0x3 y dejarlo en Y.  

Respuesta

Desafo 4.

Escribir un trozo de cdigo que haga esto:

A partir de la divisin 0x16A/0x5, meta en la pila el resultado de la operacin aritmtica
[Resto + Cuociente]*0x3 - 0x08  de esa divisin.  

Respuesta

Desafo 5.

Escribir un trozo de cdigo que haga esto:

                                     (X + 1)^5
Direct Page = RESTO DE   ----------
                                         Y

Nota: X debe estar en modo de 8 bits.  

Respuesta

Desafo 6.

Usando ciclos e indexacin:
Escribir un trozo de cdigo que saque consecutivamente los 200 siguientes valores que se encuentren a partir de la direccin $3000 y los vaya metiendo a partir de esta otra direccin $5000.  

Respuesta

Desafo 7.

Hacer este algoritmo en asm 65816:

 mientras Y < 10
 {
    si Y = 5
      salta a subrutina hola
   sino
      salta a subrutina chao  
 } Y++

 subrutina hola
   meter actual valor de Y a partir de direccin $1000

 subrutina chao
   X = 2*Y
   meter en pila el valor de X  

Respuesta

 
Alto (3 estrellas)

Desafo 1.

Escribir un trozo de cdigo que meta en la pila la MULTIPLICACIN de 50 valores hex (de 8 bits) consecutivos partiendo del que se encuentre en la direccin $4000. Es decir, que primero saca el valor que esta dentro de $4000 luego le multiplica el del $4001, luego al resultado se le multiplica el de $4002,..., as hasta multiplicarle el que se encuentra en de $4031. Finalmente si esa suma es Menor a 0x8000 se mete a la pila SINO dividir por 3 esa suma y probar de nuevo con el cuociente, si es menor o igual a 0x8000 se mete recin en la pila, si no, seguir dividiendo.

El algoritmo sera as:

  Obtener Multiplicacin de 50 valores consecutivos que se sacan a partir de $4000(sacamos el hex nmero 0) hasta el de $4031 (hex nmero 49). El resultado es nuestro parmetro.

Ciclo (parmetro)
   SI parmetro > 8000
      Dividir/3
      ejecutar Ciclo (resultado Divisin)
  SINO
      meter resultado en la pila
 

Desafo 2.

Hacer un trozo de cdigo que permita meter en la direccin $1000 en adelante, TODOS los valores PARES o IMPARES de 1 byte (0x02,0x04,0x06,0x08,0x0A,0x0C,0x0E,0x10,0x12, etc...) que existan. Lo que determina si es par o impar es que la direccin $10 ser nuestro Flag de Paridad (solo para el ejercicio), si en $10 hay un 0 entonces metemos PARES, si es 1, entonces metemos los IMPARES.
 

 

 

 

 

 

Bajar Clases en LOGs (.rtf):

LOG1

LOG2

LOG3

LOG4

LOG5

LOG6