L'assembler è una gran brutta bestia, di qualsiasi "famiglia" di CPU parliamo. Nel caso del 65xx (e del 6510 del C64 in particolare), però, quantomeno all'epoca sono uscite tantissime pubblicazioni che aiutavano a capirne i meandri. Una su tutte CCC e il suo "fratello minore" Commodore.
Io, pur NON ritenendomi pratico di assembler, tutto quello che so l'ho imparato da lì.
Visto che a quanto pare una parte di numeri di CCC sono ormai disponibili in rete, penso che se sei interessato all'argomento non sarebbe una cattiva idea partire da lì. Cominciare a vedere i disassemblati commentati delle routine più semplici, iniziare a tenere a mente i puntatori e cercare di capire cosa vogliono dire quelle sigle (LDA, STA, LDY, RTS ecc.) che non sono, in fondo, molto diverse come concetto dalle tante sigle che oggi si usano su Internet per dire LOL, ROTFL e via dicendo. Insomma sono acronimi (più o meno) di termini e frasi in inglese.
E' ovvio che un'infarinatura di base aiuta, ma penso che guardando i disassemblati di CCC se ne possa fare anche a meno, perché niente è meglio di un esempio pratico per imparare qualcosa.
Se ti dicessi che LDA sta per LoaD Accumulator, tu giustamente mi chiederesti cos'è e a cosa serve l'accumulatore.
Se invece io ti scrivessi:
LDA $0F ; Carica il numero decimale 15 nell'accumulatore...
STA $C000 ; ... e piazzalo nella locazione decimale 49152
RTI ; Torna da interrupt
Già capisci che tutto questo è l'equivalente di una POKE49152,15 da BASIC.
Inoltre, e questo è molto più importante, ti spiega a cosa serve l'accumulatore: è una sorta di "contenitore" di numeri transitori. E in più hai imparato anche a che servono STA (STore Accumulator) e RTI (ReTurn from Interrupt).
Chiaro, no? :D