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

Naufr4g0

  • Neo-iscritto
  • *
  • Post: 20
  • Gioco Preferito: Impossible Mission
Programmare In Assembler Da Dove Cominciare?
« il: 30 Ottobre 2008, 22:55:06 »
 Salve a tutti mi presento: mi chiamo Davide e come, presumibilmente, tutti voi qui iscritti sul forum sono stato un grande appassionato del gioco su quella mitica scatolona di colore marroncino (qualcuno l'aveva bianco e di forma diversa) di nome Commodore 64.
Nella mia fase preadolescenziale avevo dedicato anima e corpo alla stesura di programmi in Basic cercando di emulare i grandi giochi commerciali, ma ahimè il Basic non era fatto per creare videogiochi e anche se si potevano usare gli sprites hardware con qualche escamotage, avveniva tutto a una lentezza tale da fare desistere dagli intenti il più intrepido programmatore del suddetto linguaggio.
Ora io sentivo sempre dire assembler assembler e la cosa mi incuriosiva molto, ma la ricerca di riviste specializzate era ardua nel mio paesello, trovavo le riviste che parlavano di giochi, ma poco e niente sulla programmazione.
Adesso dopo circa 20 anni ho deciso che voglio capirci qualcosa. Mi incuriosisce davvero tanto. Sarei anche contento soltanto di riuscire a spostare uno sprite usando l'assembler.
Qualcuno mi potrebbe suggerire una guida per cominciare dalle basi?
Io so programmare in altri linguaggi come C++ e Java, quindi posso buttarmi direttamente sul come e non sul perchè della programmazione.
Un'altra cosa: ho letto su questo forum che usate delle etichette per separare i frammenti di codice, ma si scrivono realmente queste etichette quando si programma o sono semplicemente dei metodi per semplificare la lettura quando si postano i codici?

Grazie in anticipo a chiunque voglio darmi dei chiarimenti,
Davide

EDIT: Ho provato a scrivere un po' di codice utilizzando Final Cartridge III e il comando MON dall'interprete basic. C'è di meglio o va bene anche questo?

mces

  • Utente
  • **
  • Post: 339
  • Gioco Preferito: fort apocalypse
Programmare In Assembler Da Dove Cominciare?
« Risposta #1 il: 31 Ottobre 2008, 08:42:21 »
 Hai già esperienza di linguaggi ad alto livello, che si chiamano così perchè ben sai che vengono tradotti da appositi SW (compilatori) in Linguaggio Macchina.
Quest'ultimo altro non è che la configurazione di byte da mandare in pasto al processore che, essendo particolarmente ostica, per essere resa lavorabile dagli utenti viene addolcita con degli assemblatori che sono in realtà degli editor specializzati che permettono con delle utility di semplificare la vita al povero programmatore senza cambiare la natura del linguaggio stesso.
Sperando di non aver detto troppe fesserie, ti invito intanto a leggere
http://it.wikipedia.org/wiki/Assembly
in modo da avere un'idea della situazione.


 
Non esistono problemi, solo soluzioni.

Naufr4g0

  • Neo-iscritto
  • *
  • Post: 20
  • Gioco Preferito: Impossible Mission
Programmare In Assembler Da Dove Cominciare?
« Risposta #2 il: 31 Ottobre 2008, 15:31:05 »
 Ti ringrazio tanto per l'intervento, ma quello che mi hai detto già più o meno lo sapevo.
Infatti io cercavo un manuale valido per cominciare a scrivacchiare qualcosa in assembler e per avere consiglio su quale compilatore (o bisogna dire assemblatore?) utilizzare.
Ieri cliccando qui e li sui link ho trovato Turbo Assembler che sembra fatto ottimamente e mi permette di utilizzare delle label che semplificano il lavoro.
Cercavo pero' una guida per programmare. Ne ho trovate alcune ma non sono organizzate come dei tutorial, ci sono elenchi di istruzioni e codici da copiare... ma volevo qualcosa di più organizzato. :/

Cbm

  • Utente
  • **
  • Post: 423
  • Gioco Preferito: Wonderboy
Programmare In Assembler Da Dove Cominciare?
« Risposta #3 il: 31 Ottobre 2008, 18:22:40 »
 Ciao, hai provato a vedere se nella sezione libri del sito c'è qualcosa che può fare al caso tuo?
C= - Dal 1985! Lunga vita e prosperità.

MEGANOID

  • Neo-iscritto
  • *
  • Post: 19
  • Gioco Preferito: Commando
Programmare In Assembler Da Dove Cominciare?
« Risposta #4 il: 31 Ottobre 2008, 18:29:26 »
 Ciao,

qui troverai molte cose interessanti:

http://ready64.org/smf/index.php?topic=1000.0

                                                                          :D  

Naufr4g0

  • Neo-iscritto
  • *
  • Post: 20
  • Gioco Preferito: Impossible Mission
Programmare In Assembler Da Dove Cominciare?
« Risposta #5 il: 31 Ottobre 2008, 18:59:51 »
 Mamma mia ho scaricato un mare di roba, sulla pagina suggeritami da Meganoid (che comunque avevo già adocchiato nelle ultime ore) ho trovato un tutorial che funziona da c64 che sembra molto interessante . Staremo a vedere.
Turbo Assembler è buono come compilatore? Mi piace che si possono usare le etichette che era quello che cercavo.

eregil

  • Administrator
  • Utente
  • *****
  • Post: 706
  • Gioco Preferito: Impossible Mission
Programmare In Assembler Da Dove Cominciare?
« Risposta #6 il: 31 Ottobre 2008, 19:03:59 »
 Assembler != Compiler, quindi non è un "compilatore" ma un "assemblatore", come avevi intuito qualche post più su.
 
Non rispondo a richieste private, di qualunque genere esse siano.
Per domande tecniche leggete le FAQ e usate l'apposito forum.
Per questioni amministrative contattate lo staff tramite il form Contatti sul sito.

Naufr4g0

  • Neo-iscritto
  • *
  • Post: 20
  • Gioco Preferito: Impossible Mission
Programmare In Assembler Da Dove Cominciare?
« Risposta #7 il: 31 Ottobre 2008, 19:18:43 »
Citazione da: "eregil"
Assembler != Compiler, quindi non è un "compilatore" ma un "assemblatore", come avevi intuito qualche post più su.
Eh si infatti non sapevo come chiamarlo... =)
 

mces

  • Utente
  • **
  • Post: 339
  • Gioco Preferito: fort apocalypse
Programmare In Assembler Da Dove Cominciare?
« Risposta #8 il: 03 Novembre 2008, 14:21:48 »
 La documentazione che devi cercare per imparare il linguaggio macchina riguarda il processore, poi per fare diagrammi di flusso allora ti serve anche sapere COME il processore sia implementato nel sistema HW.
Per il processore 6510 devi in pratica rifarti al 6502 da cui deriva (il 6510 ha dei piedini che fanno da PIO che lo rendono kustom).
http://it.wikipedia.org/wiki/MOS_Technology_6510

Prova ad esempio in
http://6502.org/documents/datasheets/
a cercare i dati dei processori, salta le specifiche HW e vai al dizionario dei codici operativi.
Certo devi sapere cosa è un registro, a cosa servono i FLAGs, cosa vuol dire "puntare", ecc..
Nel caso avessi delle lacune a riguardo ti consiglierei un libro cartaceo da ITIS tipo... "sistemi a microprocessore" che magari trovi usato in qualche bancarella specializzata in testi scolastici.

Nei link suggeriti dagli altri trovi informazioni su come il processore sia implementato nel C64, e quindi cosa il 6510 può "tirar fuori" dall'HW.


A disposizione
Non esistono problemi, solo soluzioni.

jumpjack

  • Neo-iscritto
  • *
  • Post: 17
  • Gioco Preferito: Tuono Blu
Programmare In Assembler Da Dove Cominciare?
« Risposta #9 il: 03 Novembre 2008, 19:36:03 »
Citazione da: "Naufr4g0"

Ora io sentivo sempre dire assembler assembler e la cosa mi incuriosiva molto, ma la ricerca di riviste specializzate era ardua nel mio paesello, trovavo le riviste che parlavano di giochi, ma poco e niente sulla programmazione.
Adesso dopo circa 20 anni ho deciso che voglio capirci qualcosa. Mi incuriosisce davvero tanto. Sarei anche contento soltanto di riuscire a spostare uno sprite usando l'assembler.
Qualcuno mi potrebbe suggerire una guida per cominciare dalle basi?
Pensa che io ho imparato a programmare in assemblY proprio sul C64, e proprio grazie alla rivista che questo sito mette a disposizione gratuitamente, Commodore Computer Club!

Potresti... scaricarti tutti i numeri e studiarteli!  :D  Ne leggi uno al mese, come facevo io quando lo compravo in edicola...

Peccato che si possa scaricare solo una pagina per volta, e ogni rivista sia fatta di 90 pagine!!!
Amministratori, perche' non mettete online ZIP singoli, uno per ogni rivista? Tanto ormai c'e' l'ADSL...  :metallica: Se vi serve spazio, su Altervista vi regalano 200MB, cioe'  lo spazio per piu' di 20 riviste complete, ma pagando si puo' avere anche spazio in piu' (non mi ricordo se si paga una-tantum).

Cmq per me non fu sufficiente, in effetti, la sola rivista, dovetti trovarmi (faticosamente) un bel librone cartaceo sull'assembly del c64!

Nota bene: assemblY, non assemblER; l'assembly è il linguaggio, l'assembler è il programma per compilare i sorgenti in assembly.

E il linguaggio macchina invece è l'insieme di zeri e uni in cui alla fine risulta tradotto un qualunque programma, assembly, C o java che sia.

Naufr4g0

  • Neo-iscritto
  • *
  • Post: 20
  • Gioco Preferito: Impossible Mission
Programmare In Assembler Da Dove Cominciare?
« Risposta #10 il: 03 Novembre 2008, 22:46:37 »
 Una risposta agli ultimi due post:
Quindi ho capito che mi suggerireste un manuale cartaceo.
Sarebbe interessante, ma dovrei trovarlo per pochi euro. Visto che ero mosso solo curiosità e non volevo andare troppo avanti. Poi, non so, magari m'appassiono.. :'D

@mces: purtroppo quelle lacune che tu dici in effetti ce le ho. Però stavo leggendo un tutorial che qualcosa me la sta chiarendo.

@jumpjack: 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... :/

mces

  • Utente
  • **
  • Post: 339
  • Gioco Preferito: fort apocalypse
Programmare In Assembler Da Dove Cominciare?
« Risposta #11 il: 04 Novembre 2008, 07:10:07 »
 Esperienza personale:
all'ITIS ho imparato (testo cartaceo come da suggerimento) a programmare lo Z80 che è molto didattico (formativo), a casa ho imparato il 6510 (6502) con assembler prima in basic fatto da mio fratello (un mero traduttore assembly->linguaggio macchina) e poi con il CHAMP assembler.
Per professione anni dopo programmai gli ST6 (microCONTROLLORI single-chip).

Questo per dire: l'architettura base e il funzionamento di fondo è comune a TUTTI i microprocessori/microcontrollori e una volta imparato è bagaglio culturale, una fatica fatta una volta sola per tutte le volte che vorrai imparare un micro nuovo.

certo, lo sforzo non è gratis ma se hai passione è più leggero, quindi decidi tu: se credi che ti serva anche per il futuro, magari pure lavorativo, allora potrebbe essere il caso di imparare a programmare in codice macchina, e quindi per didattica ti consiglio un testo pensato per la didattica (dei tutorial ho diffidenza... un buon testo rimane pronto sulla mensola o sfogliabile pure durante una seduta al bagno....).

Se era solo una punta di curiosità allora
http://it.wikipedia.org/wiki/Assembly
e quindi seleziona "Guida completa all'Assembly" (quasi a fondo pagina).
Non esistono problemi, solo soluzioni.

mces

  • Utente
  • **
  • Post: 339
  • Gioco Preferito: fort apocalypse
Programmare In Assembler Da Dove Cominciare?
« Risposta #12 il: 04 Novembre 2008, 08:23:37 »
 Ogni storia è diversa, ma io studiai (fine anni '80) su questo:
http://usato.unilibro.it/site/product_used...d=31092&idaff=0
e non mi risulta che le architetture base dei processori/controllori siano mai cambiate...
Non esistono problemi, solo soluzioni.

jumpjack

  • Neo-iscritto
  • *
  • Post: 17
  • Gioco Preferito: Tuono Blu
Programmare In Assembler Da Dove Cominciare?
« Risposta #13 il: 04 Novembre 2008, 09:23:40 »
 si potrebbe provare a cercare su google queste parole chiave, e vedere cosa ne esce...
registri
program counter
accumulatore
indirizzamento
carry
rilocabile
ALU
shift
flag

Magari da qualche parte esiste un buon tutorial in italiano, chissà...

Non conosco tutte le traduzioni in inglese di questi termini.

jumpjack

  • Neo-iscritto
  • *
  • Post: 17
  • Gioco Preferito: Tuono Blu
Programmare In Assembler Da Dove Cominciare?
« Risposta #14 il: 04 Novembre 2008, 09:34:46 »
 Ah, un'altra cosa fondamentale è una MAPPA DI MEMORIA del processore su cui si intende programmare (il 6502 nel C64, come detto): la mappa di memoria indica dove bisogna leggere/scrivere per accedere ai caratteri dello schermo o ai singoli pixel, dove sono le varie routine che si occupano di eseguire i vari compiti ELEMENTARI, come leggere la tastiera, stampare un carattere, attivare uno sprite...

Pero' alcune mappe di memoria contengono solo un elenco di registri, non un elenco di routine, bisogna trovarne una completa... e commentata!
Forse da qui si puo' trovare il link giusto...:
http://www.devili.iki.fi/Computers/Commodore/

Un disassemblato commentato sarebbe l'ideale per iniziare a capirci qualcosa.

In italiano non trovo niente, ma intanto ecco l'elenco completo dei comandi del 6502 in inglese:
http://www.obelisk.demon.co.uk/6502/reference.html

EDIT:
Ho trovato un libro cartaceo.. online:
http://www.atariarchives.org/mlb/