Forum by laureateci.it
[ Home | REGOLE FORUM | Tutti i blog | Profilo | Registrati | CHAT | Discussioni Attive | Discussioni Recenti | Segnalibro | Msg privati | Sondaggi Attivi | Utenti | Download Informatica | Download ICD | Download TPS | Download Magistrale | Download Specialistica | Giochi | Cerca nel web | cerca | faq | RSS ]
Nome Utente:
Password:
Salva Password
Password Dimenticata?

 Tutti i Forum
 INFORMATICA - Primo Anno
 Architettura degli elaboratori
 programma in assembler
 Nuova Discussione  Rispondi
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
I seguenti utenti stanno leggendo questo Forum Qui c'è:
Autore Discussione Precedente Discussione Discussione Successiva  

jack1
Nuovo Utente



Inserito il - 15/05/2009 : 00:26:37  Mostra Profilo  Visita l'Homepage di jack1 Invia a jack1 un Messaggio Privato  Rispondi Quotando
Salve a tutti,desideravo alcuni consigli per quanto riguarda la programmazione in assembler.
Ho cercato di trovare alcuni programmi gratuiti che si trovano in rete per i miei scopi ma ancora non ci capisco molto.
Ciò che mi occorrerebbe ,sarebbe quello di creare un programma in linguaggio assembler (possibilmente a 8 bit come per esempio con lo Z80) per poi renderlo eseguibile su un emulatore spectrum a 48k.
Il programma dovrebbe emulare un pannello stile l'insegna di una farmacia,in cui la croce cambia colore ogni tot secondi,per esempio ogni 3 sec, e abbia l'effetto di rotazione,inserendo anche la data scorrevole.Sapete come posso fare?o quali registri dovrei usare? Grazie in anticipo.

P.S. Se qualcuno è in grado di darmi qualche pezzo di codice su come impostare il programma e in che modo renderlo eseguibile,sarei davvero grato.
Conto sul vostro aiuto :)

ekkekkazz
Utente innocuo



Inserito il - 16/05/2009 : 10:58:51  Mostra Profilo  Visita l'Homepage di ekkekkazz Invia a ekkekkazz un Messaggio Privato  Rispondi Quotando
Ciao,
sinceramente di Z80 non ne so nulla, non ho mai provato a fare una cosa del genere. Pero' dovresti controllare che se il tuo assemblatore supporta quel formato, in genere un assemblatore supporta diversi formati.

Ti do un paio di entry point :>

http://it.geocities.com/antonio_di_stefano/Informatica/z80.htm
Qui trovi tutto, dal set di istruzioni ad un simulatore ad un assemblatore vero (TASM) che supporta Z80.

http://z80.msk.ru/
Questo e' un assemblatore specifico per Z80 basato su NASM.

Magari se hai qualche problema piu' specifico metti il codice.

Ciao!
Torna all'inizio della Pagina

jack1
Nuovo Utente



Inserito il - 16/05/2009 : 12:11:16  Mostra Profilo  Visita l'Homepage di jack1 Invia a jack1 un Messaggio Privato  Rispondi Quotando
Ehi,grazie. Ho trovato interessante il primo link.Diciamo che è proprio quello che fa per me.In pratica dovrei trovare un assemblatore per Z80,oppure scrivere il codice e trasformarlo in file oggetto (obj) con TASM per poi farlo funzionare su spectrum (es. 48k).
Il link lo conoscevo già,ma non avevo idea di come iniziare ad implementare il programma per creare una Croce da insegna farmaceutica e visualizzarla in spectrum.
Grazie per la risposta e spero di avere un'ulteriore illuyminazione ;) Ciao,a presto.
Torna all'inizio della Pagina

ekkekkazz
Utente innocuo



Inserito il - 16/05/2009 : 15:29:30  Mostra Profilo  Visita l'Homepage di ekkekkazz Invia a ekkekkazz un Messaggio Privato  Rispondi Quotando
Allora, diciamo che avrei una tesi da mandare avanti ma attendo un'zione anch'io. :|

Ti dico quello che ho fatto (ovviamente non ho risolto il tuo problema :P).

Esistono diversi emulatori dello spectrum in giro, questi caricano dei file SNA (degli snapshot).

Quindi il processo e' ASM -> OBJ -> SNA. Poi devi far partire l'SNA con un simulatore.

Partiamo dal codice.
Su quel link ti dice qual e' la mappa della memoria:


0000-3FFF:	ROM (16K)
4000-57FF:	Memoria grafica (display file)
5800-5AFF:	Mappa colori (attributes)
5B00-5BFF:	Buffer di stampa
5C00-5CB5:	Variabili di sistema
...
8000-????:	RAM libera
FF58-FFFF:	Caratteri grafici utente


Il tuo codice comincia ad 8000h byte dall'inizio, perche' fino ad 8000h sei nel sistema.
La visualizzazione della croce e dei colori la fai scrivendo nell'area di memoria che va da 4000 a 5AFF.
Ovviamente li' ogni byte ha una sua posizione sullo schermo (per capire come e' strutturato lo schermo devi studiare sul link dove spiega che e' diviso in righe, linee, pixel, ecc).


Lo skeleton del programma utilizzando TASM e' questo:


.ORG	$8000

ENTRY 
; codice, codice, codice 
.END


Per esempio in mezzo ho messo qualche riga presa dal link sopra.


.ORG	$8000

ENTRY   LD	HL,$4000	; carica l'indirizzo del display file
        LD	(HL),170	; 170 in binario vale %10101010
        LD	HL,$5800	; carica l'indirizzo del display file
        LD	(HL),10	 	; 10 in binario: %00 001 010
        RET			; ritorna da dove aveva lasciato 
.END


Su quel link trovi davvero tutto l'instruction set, c'e' anche un esempio di tetris che ti puo' essere utile (vedi in fondo).


Per la compilazione, devi usare dei comandi.
Scarica TASM, spostati nella directory dov'e' tasm.exe, compila con:


C:DOCUME~1ADMINI~1Desktop\test>tasm -80 test.txt


dove test.txt e' un file di testo col codice.
Avrai in output test.obj e test.lst.

Ora devi usare il tool di quel tizio li' sempre nel primo link, cioe' specld.exe, che ti converte un OBJ in SNA.


C:DOCUME~1ADMINI~1Desktop\test>Specld.exe test.OBJ 32768


32768 e' il base address (8000 in hex), cioe' il punto in cui comincia il tuo codice.
Ora hai l'SNA.

Modificato da - ekkekkazz in data 16/05/2009 15:32:16
Torna all'inizio della Pagina

jack1
Nuovo Utente



Inserito il - 16/05/2009 : 16:56:08  Mostra Profilo  Visita l'Homepage di jack1 Invia a jack1 un Messaggio Privato  Rispondi Quotando
Grazie,considerando il fatto che sto cominciando da zero,sei stato abbastanza nte e gentile.Avevo cercato addirittura di far girare il programma preso come esempio,cioè il tetris,direttamente sull'emulatore spectrum 48k.Avevo letto che si possono caricare oltre ai file SNA anche quelli in .Z80 ma,al momento dell'esecuzione,trova errore in due variabili.Forse il programma avrà qualche errore?..mah,probabile magari che mi ci dovrò dedicare di più.
Ti ringrazio per avermi risposto e in bocca al lupo per la tua tesi ;)
Torna all'inizio della Pagina

ekkekkazz
Utente innocuo



Inserito il - 16/05/2009 : 19:46:20  Mostra Profilo  Visita l'Homepage di ekkekkazz Invia a ekkekkazz un Messaggio Privato  Rispondi Quotando
Prego.
Crepi il lupo (chissa' quando). :\

Modificato da - ekkekkazz in data 16/05/2009 19:46:50
Torna all'inizio della Pagina

Virgilio
Utente assiduo


Regione: Puglia
Prov.: Bari
Città: Bari


Inserito il - 16/05/2009 : 22:45:13  Mostra Profilo  Visita l'Homepage di Virgilio Invia a Virgilio un Messaggio Privato  Rispondi Quotando
Per curiosità, come mai vorresti fare un lavoro per un computer vintage, come lo Spectrum?
Torna all'inizio della Pagina

jack1
Nuovo Utente



Inserito il - 17/05/2009 : 02:16:39  Mostra Profilo  Visita l'Homepage di jack1 Invia a jack1 un Messaggio Privato  Rispondi Quotando
Ciao Virgilio,la mia necessità è dovuta solo a scopo didattico.Tu saresti in grado di aiutarmi?Ad ogni modo quello che mi interesserebbe di più è il codice assembler per z80 del programma che ho esposto nel mio primo post.
Ciao e buona Domenica ;)
Torna all'inizio della Pagina

jack1
Nuovo Utente



Inserito il - 26/05/2009 : 17:44:12  Mostra Profilo  Visita l'Homepage di jack1 Invia a jack1 un Messaggio Privato  Rispondi Quotando
Salve,scusate,volevo fare una domanda riguardo sempre quest'argomento.
Essendo molto complicatgo il fatto di inserire pixel per pixel nel compilatore,non sarebbe possibile convertire qualche immagine in codice assembly? Oppure magari utilizzare delle immagini e creare delle sequenzencon le immagini stesse.So che col x86 si può fare,volevo sapere se si può fare anche con z80.Grazie,ciao :)
Torna all'inizio della Pagina
  Discussione Precedente Discussione Discussione Successiva  
 Nuova Discussione  Rispondi
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
Vai a:
Forum by laureateci.it © 2002 - 2012 Laureateci Communications Torna all'inizio della Pagina
Il DB ha risposto in 0,17 secondi.

TargatoNA.it | SuperDeejay.Net | Antidoto.org | Brutto.it | Equiweb.it | Snitz Forum 2000