Último mensaje de la página anterior:
Sí te has explicado bien, pero creo que la aproximación que tomas no es del todo correcta. Si buscas por sí solo un 4 en memoria puede haber cientos. NO es lo que hay que buscar, no es la forma más óptima. Teniendo en cuenta que estamos en el procesador 6502 (el 6510 del Commodore 64 es un 6502 modificado para tener más puertos de I/O) pues solo tenemos 3 registros de 8 bits: A, X e Y. Lo que habría que buscar es un LDA #$04, LDX #$04 o LDY #$04 (en opcodes hexadecimal A9 04, A2 04 y A0 04). El buscar 2 bytes en vez de 1 va a ofrecer muchos menos resultados.Luego a la hora de desensamblar hay que empezar bastantes bytes antes del resultado de la búsqueda. Yo solía empezar 128 antes ($80) porque así vas viendo si hay código o si hay basura (u otros datos), si el flujo del desensamblado sigue una cadena lógica y no hay instrucciones desconocidas (marcadas con ???) en medio de alguna instrucción con sentido. En contraposición al Z80 cuyos bytes a 0 son un NOP, el 0 del procesador 6502 equivale a la instrucción BRK que rompe el flujo del programa: en definitiva no hay ceros en medio de un código 6502 del Commodore 64 (el Apple II sí que puede llegar a utilizar alguna vez la instrucción BRK).
El contenido cargado en un registro no vale para nada si no se deposita en una dirección de memoria, así que inmediatamente después o alguna instrucción más tarde, debe haber un STA, STX o STY con una dirección de memoria (bien en direccionamiento absoluto de 2 bytes, bien en página cero con 1 solo byte) que son las que debemos apuntar en nuestro cuaderno. Al menos, hemos bajado de cientos a pocas unidades. Son estas direcciones las que iremos vigilando mientras perdemos vidas, a ver si suena la flauta.