Fran Gallego:
Un ejemplo para un score de 4 dígitos
Si tienes el score en HL
y le sumas una puntuación que está en DE
ld hl, #0x4995
ld de, #0x0010
ld a, l
add e
daa
ld l, a
ld a, h
adc d
daa
ld h, a
con eso sumas y da 0x4995+ 0x10 = 0x5005
Es como si sumaras en decimal
Pues sacando cada dígito por separado
porque cada dígito está codificado en 4 bits
Son dígitos hexadecimales
Si tienes A = 0x95
Los primeros 4 bits son un 9 ( 1001 )
Los segundos 4 bits son un 5 ( 0101 )
Así que sólo tienes que hacer operaciones de bits para quedarte con cada parte
y luego sumarles 48 para convertirlos en ASCII
Por ejemplo, si A = 0x95 = 0b10010101
puedes hacer esto para imprimir el 5
and #0x0F
add #48
call cpct_drawCharM0_asm
Con el AND te quedas sólo con los 4 últimos bits (el 5 )
le sumas 48 y da 53 (carácter del 5 en ASCII)
y se lo pasas a drawChar para imprimir
Si quieres imprimir el 9 de A = 0x95
harías esto
rrca
rrca
rrca
rrca
and #0x0F
add #48
call cpct_drawCharM0_asm
Rotas los bits de A 4 veces para poner abajo los 4 bits de arriba
y haces lo mismo de antes
De hecho, igual este año lo comento en clase porque es algo que nunca he explicado y creo que puede ser útil
No hay comentarios:
Publicar un comentario