Autore Topic: Programmare In Assembler Da Dove Cominciare?  (Letto 13960 volte)

Raffox

  • Administrator
  • Utente
  • *****
  • Post: 714
    • http://www.raffox.com
  • Gioco Preferito: Moonshadow (Idea)
Programmare In Assembler Da Dove Cominciare?
« Risposta #15 il: 04 Novembre 2008, 10:27:34 »
 
Citazione da: "jumpjack"
EDIT:
Ho trovato un libro cartaceo.. online:
http://www.atariarchives.org/mlb/
Occhio però alla sintassi dei prg in BASIC, qualora li digitassi, perchè sono presenti errori: DATTA anzichè DATA, ADRES al posto di ADDRESS.

Se proprio sei interessato ad apprendere (bene) la programmazione in Assembly e proprio non vuoi fare a meno di un supporto cartaceo, ti consiglio di:

- setacciare eBay e, con un pò di fortuna, acquistare per pochi Euro un libro relativo all'argomento (il migliore è: Programmazione del 6502, Rodnay Zaks);

- apprendere la struttura della mappa di memoria nonchè l'uso dei comandi Assembly e di un compilatore Assembler (ti consiglierei in proposito la versione portata avanti da iAN_CooG del DASM);

- impratichirti facendo tanto de-engeneering, ossia disassemblando programmi altrui al fine di capirne il funzionamento (ad esempio, qui, nella sezione RANT).

Tutto ciò, naturalmente, facendo ampio uso del prezioso materiale disponibile ai link forniti precedentemente dagli altri utenti!

mces

  • Utente
  • **
  • Post: 339
  • Gioco Preferito: fort apocalypse
Programmare In Assembler Da Dove Cominciare?
« Risposta #16 il: 04 Novembre 2008, 12:07:14 »
 sconsiglio vivamente l'apprendere dagli esempi: non sempre sono istruttivi, a volte sono criptici, spesso non esaustivi e sicuramente non sono didattici.
anche imparare meta-linguaggi per gestire l'assembly è una stupida perdita di tempo, basta saper usare un assembler entry-level e si può fare TUTTO.

Il 6502 NON ha mappa di memoria, se mi escludete la PIO integrata nel 6510, i registri e le peculiarità della pagina ZERO e UNO (rispettivamente per i puntatori e per lo STACK), la mappatura appare quando si parla del mondo esterno a cui è collegato il processore, nel nostro caso l'implementazione è l'HW del C64,
che è rappresentata nel manuale del C64 (anche in quello utente? nel "reference guide" sicuro!).
Le uniche entità di memoria che si trovano NEL processore sono i suoi registri (architettura comune a TUTTI i processori/controllori), la cui funzione e specializzazione trovi sia sul "reference guide" che nel link del "6502.org" che ti avevo postato prima.

Il libro su cui ho studiato io e che riporta VARIE implementazioni su VARI processori e controllori inizia trattando appunto l'architettura di un GENERICO processore per poi specializzare il discorso sulle varie macchine: questo è quello che chiamo appunto approccio didattico, se poi consideri che è per studenti di mediasuperiore (linguaggio e spiegazione dei concetti al relativo livello) credo che possa essere un buon libro (lui o un equivalente), considera che sul sul link di prima il libro costa 10euro, su e-bay 20 e sulla bancarella sotto casa.... vedi tu!
Non esistono problemi, solo soluzioni.

jumpjack

  • Neo-iscritto
  • *
  • Post: 17
  • Gioco Preferito: Tuono Blu
Programmare In Assembler Da Dove Cominciare?
« Risposta #17 il: 04 Novembre 2008, 14:34:08 »
 Ho trovato una guida in italiano alla programmazione del c64 in assembly!
http://www.bertinettobartolomeodavide.it/p...ODORE%2064.html

NOn capisco perche' usa i NUMERI invece degli mnemonici per i comandi, ma vabbe'...
 

Naufr4g0

  • Neo-iscritto
  • *
  • Post: 20
  • Gioco Preferito: Impossible Mission
Programmare In Assembler Da Dove Cominciare?
« Risposta #18 il: 04 Novembre 2008, 15:24:43 »
 Mamma mia quanto materiale in poco tempo. :)
Grazie a tutti
Adesso dovro' spulciarmi un po' di roba, vediamo cosa riesco a fare.
Nel tutorial che avevo trovato stavo facendo la lezione sui flag, ma da una prima lettura c'ho capito poco. Capisco che è un po' complesso. Purtroppo non lo posso studiare come vorrei perchè ho la laurea a cui pensare.
Peccato inoltre che l'informatica non sarà mai la mia professione, visto che sono un Ing. Civile. :') E' già tanto che mi servirà utilizzare programmi ad altissimo livello, come il Matlab.

jumpjack

  • Neo-iscritto
  • *
  • Post: 17
  • Gioco Preferito: Tuono Blu
Programmare In Assembler Da Dove Cominciare?
« Risposta #19 il: 04 Novembre 2008, 16:01:36 »
 Questo è bellissimo: un emulatore di 6502 in javascript!!!
http://www.6502asm.com/

Gli indirizzi di memoria non corrispondono a quelli del c64, ma i comandi ASM si'.
La memoria video per esempio va da $200 a $5ff invece che da $3e8 a $bb8 , ed è fatta di 1024 byte (32x32) invece che 1000 (40x25).

 

Roberto

  • Administrator
  • Utente
  • *****
  • Post: 2415
    • https://ready64.org
  • Gioco Preferito: Impossible Mission
Programmare In Assembler Da Dove Cominciare?
« Risposta #20 il: 04 Novembre 2008, 16:40:29 »
 
Citazione da: "Naufr4g0"
Ho visto la rivista CCC e sembra interessante, ma poco pratica da consultare... (ci fosse magari un pdf per ogni numero!)
Tra l'altro non parla solo di assemblY e quindi devo cercare le pagine giuste a vista dall'anteprima delle immagini... :/
Timidamente segnalo l'esistenza di un sommario testuale che semplifica la consultazione della rivista: http://ready64.org/ccc/sommario.php
Inoltre, generalmente a pagina 3, c'è comunque la scansione con il sommario, ben riconoscibile anche dalla miniatura.
Per collaborare, segnalare un errore (o qualsiasi altra comunicazione importante) utilizzare la pagina dei contatti:
https://ready64.org/informazioni/contatti.php

Naufr4g0

  • Neo-iscritto
  • *
  • Post: 20
  • Gioco Preferito: Impossible Mission
Programmare In Assembler Da Dove Cominciare?
« Risposta #21 il: 04 Novembre 2008, 17:06:41 »
Citazione da: "Roberto"
Citazione da: "Naufr4g0"
Ho visto la rivista CCC e sembra interessante, ma poco pratica da consultare... (ci fosse magari un pdf per ogni numero!)
Tra l'altro non parla solo di assemblY e quindi devo cercare le pagine giuste a vista dall'anteprima delle immagini... :/
Timidamente segnalo l'esistenza di un sommario testuale che semplifica la consultazione della rivista: http://ready64.org/ccc/sommario.php
Inoltre, generalmente a pagina 3, c'è comunque la scansione con il sommario, ben riconoscibile anche dalla miniatura.
Grazie per il consiglio.
Non avevo notato ci fosse il sommario. :)
Cmq la difficoltà nella consultazione, da me lamentata, nulla vuole togliere alla qualità del lavoro svolto che ho apprezzato molto in ogni caso.

Raffox

  • Administrator
  • Utente
  • *****
  • Post: 714
    • http://www.raffox.com
  • Gioco Preferito: Moonshadow (Idea)
Programmare In Assembler Da Dove Cominciare?
« Risposta #22 il: 04 Novembre 2008, 17:59:31 »
 mces, al di là del modo che hai di scrivere (a tratti presuntuoso), trovo questo tuo intervento particolarmente fastidioso ed irritante.

Intanto ci sono mille modi di apprendimento ed ogni utente deve sentirsi libero di adottare la metodologia di studio che più gli si confà.

Fatta questa scontata premessa, ti rispondo in questo modo:

1) il reverse engineering è una procedura applicata dalla stragrande maggioranza dei programmatori seri, e sicuramente è un validissimo modo di fare didattica specialmente per 'scoprire' certi segreti/perle di programmazione. Forse tu specificatamente avrai avuto difficoltà nello studiare lavori altrui, io invece ne ho tratto sempre utilissimi insegnamenti. Certo occorre avere il buon senso di scegliere programmi decenti se si desidera essere facilitati nel processo di apprendimento, ma ciò non toglie che anche da programmi più bislacchi si può sempre imparare, se non altro come ottimizzarli o fixarli!

Mi risulta assai difficle non contestare le che hai appenna scritto... Se, come dici, 'sconsigli vivamente' di apprendere da esempi altrui, mi spieghi allora DA DOVE un utente, che muove i primi passi nella programmazione in assembly, può conoscere le tecniche di programmazione? Danotare che anche i libri sono SEMPRE corredati da listati altrui: non è questo un processo di reverse engineering??

Gli esempi sono SEMPRE istruttivi, anche se presentano bug... il fatto stesso di riconoscerli è chiaro segnale di avanzamento e miglioramente delle proprie conoscenze!

2) è ovvio che, consigliando di studiare la mappa di memoria,  mi riferisco specificatamente a quella del Commodore 64. Tutto comunque deducibile soprattutto dal contesto generale (ti ricordo che questo è un sito dedicato al C64!)

3) Non è affatto vero che con un 'assembler entry level' si può fare TUTTO! Proprio perchè entry level, un assembler meno ricco di funzioni può andare bene per muovere i primi passi. Sicuramente si riveleranno comodi editor più avanzati ed 'intelligenti', magari anche per il solo fatto di semplificare certe procedure in fase di coding (proprio come le meta-tag).

4) Anche per quel che riguarda la scelta di un libro, i canali tramite i quali potersene appropriare sono diversi... però vorrei proprio vederti alla bancarella sotto casa tua mentre, guarda caso, trovi proprio il libro che cercavi per imparare l'assembly per C64! Saresti una vera mosca bianca.

Ah, dimenticavo... Il testo scritto da Rodnay Zaks, che tra l'altro è molto famoso tra gli addetti, è stato utilizzato anche da diversi noti programmatori italiani (vedi Marco Corazza, Federico Canetta etc.).

Naufr4g0

  • Neo-iscritto
  • *
  • Post: 20
  • Gioco Preferito: Impossible Mission
Programmare In Assembler Da Dove Cominciare?
« Risposta #23 il: 04 Novembre 2008, 18:15:14 »
 Beh anche io devo dire che gli esempi per me sono fondamentali, l'importante è non copiarli passivamente. Ne ho letto qualcuno è sono stati per me molto esaustivi, soprattutto per muovere i primi passi.
Per quanto riguarda la semplificazione del lavoro dovuto all'utilizzo di meta-tag, devo dire che è una comodità irrinunciabile e che tra l'altro non leva niente alla purezza dell'assembly. E' come avere un foglio di carta dove appuntiamo gli indirizzi utili per i salti. Tra l'altro immagino a quanto sarebbe scomodo aggiungere istruzioni tra una istruzione e l'altra, perchè dovremmo spostare tutto il codice in avanti.. :/
Mentre con assemblatori con Turbo assembler è tutto molto più comodo.

jumpjack

  • Neo-iscritto
  • *
  • Post: 17
  • Gioco Preferito: Tuono Blu
Programmare In Assembler Da Dove Cominciare?
« Risposta #24 il: 04 Novembre 2008, 19:10:09 »
 ...io non ricordo di aver mai scritto UNA riga di codice in un nuovo linguaggio senza prima... averla copiata da qualcunaltro per poi modificarla!  :D

Cmq, a parte le polemiche, sono riuscito a trovare una interessantissima raccolta di "cartacei scannerizzati" sul commodore 64, incluso un libro che ho io, che ordinai per posta millenni fa e che credevo fosse introvabile! :huh:

Sembra che ormai su internet non ci sia niente di introvabile!!!

Ecco il disassemblato commentato  del sistema operativo del commodore 64!
http://www.1000bit.it/support/manuali/comm...ivo_del_C64.pdf

Ma vedo che ce ne sono anche molti altri, commentati e non.
http://www.1000bit.net/support/manuali/manuali.asp

Mi ricordo quanto mi "intrippava" andare a ficcanasare negli "ingranaggi" del mio commodore 128, risalendo da un jump all'altro fino ad arrivare alle routine di decodifica della linea di comando!  :mattsid:
Addirittura scoprii dei comandi nuovi nel basic del 128 e nel suo "monitor", che "notificai" a CommodoreComputerClub, che pubblico' la mia lettera sui comandi "quit" e "off". Regalo un pupazzetto a chi riesce a ritrovarmi quale numero era!  :D Il comando che invece avevo scoperto per il monitor non me lo ricordo...

Tornando a come si impara l'assembly dai listati degli altri... ecco il mio, comparso su CCC #80 nel remoto 1990  :D (e chissenefrega della modestia  ;) )
http://ready64.org/ccc/80/032.jpg
http://ready64.org/ccc/80/033.jpg
http://ready64.org/ccc/80/034.jpg
http://ready64.org/ccc/80/035.jpg

...sto cercando di "ricostruire" l'hacking di cui si parla alla fine dell'articolo, che permetteva di scoprire un "easter egg" scurrile in Ghostbusters 2!  :D

jumpjack

  • Neo-iscritto
  • *
  • Post: 17
  • Gioco Preferito: Tuono Blu
Programmare In Assembler Da Dove Cominciare?
« Risposta #25 il: 04 Novembre 2008, 20:06:03 »
 Eh eh... funziona... :)
 

Naufr4g0

  • Neo-iscritto
  • *
  • Post: 20
  • Gioco Preferito: Impossible Mission
Programmare In Assembler Da Dove Cominciare?
« Risposta #26 il: 04 Novembre 2008, 20:26:58 »
Citazione da: "jumpjack"
Eh eh... funziona... :)
L'easter egg di ghostbusters 2 dici?

iAN CooG

  • Utente
  • **
  • Post: 1774
    • http://iancoog.altervista.org
  • Gioco Preferito: Turbo Assembler, ActionReplay Monitor, DiskDemon
Programmare In Assembler Da Dove Cominciare?
« Risposta #27 il: 04 Novembre 2008, 20:29:30 »
Citazione da: "jumpjack"
invece che da $3e8 a $bb8
AUFFF... Non spariamo cifre a caso: $0400-$07e7.
Se non si ricordano, controllare i dox prima di postare. Non serve a nessuno scrivere inesattezze, anche se a leggere tutto il thread dall'inizio ce n'e' da mettersi le mani nei capelli, non staro' qua ad elencarle se no non ne usciamo piu'. :doh:  
-=[]=--- iAN CooG/HVSC^C64Intros ---=[]=-
- http://hvsc.c64.org - http://intros.c64.org -

mces

  • Utente
  • **
  • Post: 339
  • Gioco Preferito: fort apocalypse
Programmare In Assembler Da Dove Cominciare?
« Risposta #28 il: 05 Novembre 2008, 08:31:30 »
 Sono veramente spiacente che il mio stile di comunicare risulti irritante, me ne spiaccio, anche se non riesco a decodificarne il motivo visto che per stile anche quando voglio esprimere concetti categorici mi viene spontaneo usare termini (seguiti dalle motivazioni) come "scosnsiglio vivamente", dovresti, credo che, mi sembra, non credi che, ritengo.....
Non ho certezze da vendere, offro le mie opinioni che sono frutto della mia esperienza, e quindi puntualizzo:
nonostante questo sia un sito dedicato al mitico 64 ritengo che se una persona per passione impara a scrivere in LM magari può farlo in maniera che gli possa essere anche utile sul lavoro o sul curriculum vitae dove non puoi scrivere "ho imparato a copia-incolla ad usare un processore ma non ho capito cosa sono i FLAGs".
Forse NON hai imparato.
Avete mai appreso l'inglese da zero solo ascoltando la CNN?
Allora se con il 10..30% di sforzo in MENO si riesce a fare know-how perchè non consigliarlo? non mi sembra proprio di tradire la natura di un vecchio utente di C64, visto pure che anche per me il biscottone è stato una palestra di SW e HW (anche HW NON informatico!) che mi ha dato la possibilità di trovare un lavoro decente.
Per il testo: QUALUNQUE libro/tutorial/suocera che sia in grado di spiegare con un minimo di rigore l'architettura di un microperatore è appropriato, il riferimento al cartaceo su cui studiai è un mero riferimento bibliografico a piè di pagina (giuro che l'editore non mi passa la tangente..).
Sono ancora fermamente convinto che per chi inizia osservare il SW scritto dagli altri sia DELETERIO anche perchè sposta l'attenzione del neofita da "come funziona la CPU" a "quali compiti il SISTEMA è in grado di svolgere".
Sono due cose diverse e se vuoi fare il meccanico non devi studiare da autista.
(azzz.... sono riuscito a non dire "secondo me"!)
 
Non esistono problemi, solo soluzioni.

jumpjack

  • Neo-iscritto
  • *
  • Post: 17
  • Gioco Preferito: Tuono Blu
Programmare In Assembler Da Dove Cominciare?
« Risposta #29 il: 05 Novembre 2008, 08:46:02 »
Citazione da: "iAN CooG/HF"
Citazione da: "jumpjack"
invece che da $3e8 a $bb8
AUFFF... Non spariamo cifre a caso: $0400-$07e7.
Se non si ricordano, controllare i dox prima di postare. Non serve a nessuno scrivere inesattezze, anche se a leggere tutto il thread dall'inizio ce n'e' da mettersi le mani nei capelli, non staro' qua ad elencarle se no non ne usciamo piu'. :doh:
boh, veramente mi pareva di aver anche provato con poke 1000,1 ed era venuta una A in alto a sinistra, ma ho fatto duemila prove, magari mi so' confuso...  :stordita:

Citazione
L'easter egg di ghostbusters 2 dici?
si'.  :D