Newsgroup: it.comp.programmare
Titolo: Sono sbagliati questi appunti?

Materiale didattico del mio corso:
http://digilander.libero.it/maxxam99/Pics/2010-07-08_122151.jpg
Se ho capito bene, l'indirizzo del dato da copiare in AX è dato dalla 
somma dei due valori contenuti in Dati e DI.
Ma dal disegno sembra che prenda l'indirizzo di Dati come offset, è 
sbagliato, no? E' il contenuto di dati, non l'indirizzo, giusto?
-- 
Bonus di 25 euro su 
betfair.it
, codice da inserire: AAAACGWFG
Vai sul mio sito(in fondo alla pagina) per altri dettagli:
http://digilander.libero.it/maxxam99/

 
carica in AX il valore prelevato all'indirizzo DI+DATI ( poiche' AX  e' 
una word preleva dalla memoria una word ) (*).
ora che DI sia "l'indirizzo" base e DATI l'offset o viceversa  e' 
ininfluente ( ovvero funziona in entrambi i casi ) e dipende tutto da 
cosa il programmatore vuole ottenere: accedere ad un elementdo 
[variabile] di un array ad un indirizzo di base fisso o accedere ad un 
campo di una struttura con indirizzo di base [della struttura] variabile .
(*) nell' 80x86 sono permessi gli accessi alla memoria non allineati, le 
word possono anche trovarsi ad indirizzi DISPARI, differentemente da 
come avviene col 68000

 come avviene col 68000
Quindi era come dicevo(forse non mi sono espresso bene prima): quel 
disegnino è sbagliato?
Ottiene l'indirizzo facendo Dati+DI=7+1=8
Ma in dati non c'è 7, non c'è nulla, 7 è l'indirizzo di Dati.
Per avere 8 come indirizzo del dato da copiare Dati dovrebbe contenere 
il valore 7(nel quadrato quindi dovrebbe starci un sette), esatto?
Grazie infinite.


 somma dei due valori contenuti in Dati e DI.
Sì, tutto giusto, però... se ti sembra astrusa questa, aspetta di 
studiarti le istruzioni LEA :-)
P.S.
che corso di laurea stai facendo? Non sapevo che all'università 
facessero studiare l'assembler. Mi hai fatto incuriosire :-)

 locazione di memoria, ma sempre un simbolo rimane
Ecco da dove nasceva la mia confusione.
Grazie ancora per il prezioso chiarimento.



ad ingegneria elettronica, ho dato "Macchine per l'Elaborazione 
dell'Informazione" a valle del corso di calcolatori elettronici.
nel corso di macchine si studiava la parte "pratica" di calcolatori e un 
processore ( all'epoca 8086 ) e quindi si facevano anche un po' di 
esercitazioni ed elaborati in linguaggio macchina.


Ingegneria Informatica, sto preparando l'esame di calcolatori.


 dell'Informazione" a valle del corso di calcolatori elettronici.
Erano due esami diversi?
Io l'assembly lo faccio in Calcolatori e basta.
Io un corsetto da 6 crediti del primo anno  hanno avuto il coraggio di 
infilarci architettura, teoria(Algebra di Boole, Karnough, Automi, 
ecc..) , e assembly sia del  68000 che 80x86.


 Ingegneria Informatica, sto preparando l'esame di calcolatori.
Io ho fatto ing. elettronica, ma l'assembler non l'abbiamo mai visto ai 
corsi. All'uni ho fatto pascal, C e prolog. Ma erano altri tempi, ho 
scansato le schede perforate per due o tre anni, tanto era passato da 
che avevano comprato i videoterminali VT220 seriali. Iniziai nel 1986.
Le prime cose di programmazione le feci su un VAX 11/780 :-)


L'assembly l'hai imparato da solo per lavoro quindi oppure hai fatto 
altri corsi/specializzazioni varie?


 Grazie ancora per il prezioso chiarimento.
Mi inserisco qui per aggiungere una cosa:
il termine per indicare quella situazione e' ETICHETTA o LABEL.
DATI e' l'etichetta di quell'indirizzo di memoria, nel caso in
questione 7.
Magari tu non sai a che indirizzo corrisponde, perche' in genere non
interessa.
Quando scrivi il codice, ad un certi punto vuoi riservare un'area di
memoria, metti una etichetta
DATI: DS 256;
Hai definito uno spazio di 256 byte che hai etichettato DATI.
Ogni successivo riferimento a DATI indichera' quell'area di memoria
li'.

 li'.
Perdonami ma non dovrebbe essere DB 256 ?


 Perdonami ma non dovrebbe essere DB 256 ?
Errore: con DB 256 inizializzo un byte...
Resta il fatto che DS non l'ho ancora incontrato.
Ciao.


>> Hai definito uno spazio di 256 byte che hai etichettato DATI.
Con gli strumenti che ho al momento(pochissimi!) per inizializzare 256 
byte farei:
DATI: DB 256 dub(?)


 DATI: DB 256 dub(?)
Ovviamente è più corretto dire "riservare" e non  "inizializzare"



Nono, prima dell'uni... Commodore 64 ^_^
E poi, molto dopo, sul mio primo PC.


Come si faceva a programmare in assembly sul C64?
Ricordo qualche listato basic che ho digitato anch'io su un vecchio 
C64(senza capirci niente eh, li copiavo e li eseguivo, mi pare col 
comando run)


 Come si faceva a programmare in assembly sul C64?
A forza di POKE :-)
L'unica era scrivere un programma BASIC che scrivesse il programma 
assembler in RAM e che poi lo lanciasse.
Comprando tonnellate di riviste, a un certo punto avevo trovato un corso 
di assembler 6502 (moolto alla buona), gli indirizzi dell'I/O 
(memorymapped) del C64 erano in pratica di pubblico dominio... e tutto 
pieno di entusiasmo sono partito da lě. Una volta scritto il programma 
assembler dovevi tradurre tutto a mano i byte in numeri decimali e 
POKarli uno per uno. Va da sé che non ho scritto grandi applicazioni, 
solo qualcosetta per smanettare con il SID e la grafica e un monitor... 
il monitor per non dover scrivere quei pallosissimi listati BASIC: 
inserivo i byte direttamente in RAM col monitor e poi lo facevo saltare 
all'indirizzo iniziale :-)
Finito che ebbi di scrivere e debuggare il monitor, fině anche il mio 
interesse nell'asm del C64 ^____^

 interesse nell'asm del C64 ^____^
il mio primo programma "degno di nota" fu un assemblatore 6502 scritto 
in fortran per 'lesame di programmazione che girava sul mainframe 
dell'universita'


Vi invidio, avete vissuto una bellissima epoca per l'informatica mi sa, 
quasi da pionieri :-)


 
guarda che la "scena" informatica per chi vuole sperimentare in questo 
momento e' MOLTO interessante l'importante e' volerlo fare e non usare i 
PC per giocare e basta, ti faccio un po' di nomi e te li cerchi in rete:
FriendlyArm
Arduino
STM32 ( fai una ricerca su ebay e pesca le schede con i display )
DSO nano
PrimerII
sara' stato pure epico/eroico usare le schede perforate, pero' poi a 
casa c'era ben poco da fare !


DS 256
vorrebbe essere una allocazione (Define Space) di 256 byte.
Magari non tutti gli assemblatori riconoscono questa sintassi, adesso
non ricordo quale la supporta.
Ma non e' importante.
Ogni assemblatore ha una sua direttiva per riservare memoria.

 Come si faceva a programmare in assembly sul C64?
Mah... in realta' c'era molta pappa pronta, sotto forma di routines in
rom da chiamare per effettuare alcune cose, oppure si inviavano
impulsi alla circuiteria, in particolare al chip sonoro o al video.
Ecco, la cosa che aiutava parecchio all'epoca era che i processori
erano a 8 bit, e i registri pure.
A 16 bit c'era solo l'indirizzatore di memoria che appunto vedeva solo
64K.

 PC per giocare e basta, ti faccio un po' di nomi e te li cerchi in rete:
E poi oggi ci sono fior di emulatori che riproducono in toto sia i
vecchi home computer a 8 bit come il C64 o lo ZX Spectrum, o
l'emulatore Amiga col suo bel 68000 emulato!
E' un' epoca decisamente ripercorribile, anche se oggi e' molto
difficile comprendere quel mondo, in cui non c'era google, non c'era
la rete, non c'era niente, solo la voglia di capire come funzionavano
quei piccoli aggeggi a tasti.

 quei piccoli aggeggi a tasti.
Non c'era niente, insomma... c'era la carta, e pure tanta: camera mia 
era letteralmente invasa di riviste di computer, nuotavo fra le pile di 
MCmicrocomputer, Videogiochi, Nuova Elettronica e le millemila testate 
della Jackson. A un certo punto su ordine tassativo di mamma ("BASTAA!!! 
Butta via tutto questo zozzo!!!") mi misi a spaginare le riviste per 
tenere solo gli articoli "interessanti" e buttare il resto :-)
E' vero che era tutto più semplice, più immediato. Non c'erano 
protocolli, non c'erano formati di file, non c'erano librerie, API, 
framework, thread, lock, permessi... dovevi farti tutto tu, ma l'unica 
cosa da imparare era il linguaggio e un pò di locazioni di memoria della 
tua macchina, dopodiché eri il padrone dopo Dio del tuo computer.
Adesso, quando un pischello impara un linguaggio di programmazione dal 
niente come feci io ne ha da mangiar pagnotte, prima di poter combinare 
qualcosa di valido. Ma d'altra parte ha pure internet a disposizione, 
noi una cosa così ce la sognavamo la notte.
Eh sì... ora che ci penso, a quei tempi Internet com'è ora era 
fantascienza, proprio solo fantascienza. Stiamo vivendo oggi nel futuro 
che ci sognavamo ieri da ragazzi... nonostante tutto è una figata, no? :-)