Oppure

Loading
11/04/10 22:03
robrock80
Salve a tutti. Ho iniziato a studiare l'assembly e ho scritto questo programmino
			.MODEL		small
			.STACK
			.DATA
OPD1		DW			10
OPD2		DW			10
RESULT		DW			?
			.CODE
			START:
			MOV		AX, OPD1
			ADD		AX, OPD2
			MOV		RESULT, AX
			.EXIT
			END


Ma purtroppo il MASM non mi mi compila. Questi sono gli errori

D:\Robbie\Dati\Workspaces\WinASM\FirstApp\FirstApp.asm(9) : error A2074: cannot access label through segment registers
D:\Robbie\Dati\Workspaces\WinASM\FirstApp\FirstApp.asm(10) : error A2074: cannot access label through segment registers
D:\Robbie\Dati\Workspaces\WinASM\FirstApp\FirstApp.asm(11) : error A2074: cannot access label through segment registers
Ultima modifica effettuata da robrock80 11/04/10 22:04
aaa
12/04/10 6:08
nessuno
Manca una direttiva

ASSUME ds:_DATA

Ma con un progetto che usa il modello "small", non vai molto lontano ...

L'assembly non si studia facendo prove su prove senza capire cosa si fa perchè lo si è studiato prima in teoria. Per capirci, il mio e' un suggerimento, non una critica ...
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
12/04/10 8:46
robrock80
Quello che vedi lì è un esempio preso da un libro (cartaceo) che sinceramente non mi sembra un granchè. Ho cercato in lungo e in largo ma il problema è che di libri in italiano se ne trovano pochissimi e di buoni per niente. Perchè non mi indichi un percorso (che comprenda pdf, libri da acquistare e quant'altro) che io possa seguire?
Ho sempre sognato imparare questo linguaggio e ho atteso veramente tanto e nell'attesa ho messo da parte tutto il materiale che ho trovato strada facendo ma sono tutt'altro che convinto di avere robba buona

P.S.: la direttiva ha funzionato
Ultima modifica effettuata da robrock80 12/04/10 9:11
aaa
12/04/10 9:18
nessuno
Un "percorso" in italiano, scordatelo ...

L'assembly (x86, ma anche per altre CPU) è un argomento molto specialistico e un approccio a testi e documentazione inglese è inevitabile.

Un prerequisito "necessario" per "cominciare" ad affrontare manualistica adeguata (sempre in inglese) è la conoscenza approfondita del funzionamento della CPU (della famiglia di riferimento per la quale si vuole scrivere). E quando dico "approfondita", intendo "molto" approfondita, non le classiche conoscenze di bus di indirizzi/dati/registri/ALU/microistruzioni ma molto di più, che ottieni dai manuali specialistici (ottimi sono quelli della Intel, scaricabili gratuitamente dal sito, ovviamente in inglese ...).

Per questo ci vuole, ovviamente, molto, molto tempo e quindi se il tuo obiettivo è imparare l'assembly in "1 mese", allora ti consiglio di lasciar perdere.

Per capirci, l'assembly che hai usato nel codice è orientato ai processori a 16 bit, in modalità detta "reale", non più usata dai tempi del DOS (testimone è l'indirizzamento con registri di segmento DS,ES,SS,CS + offset, che non viene usato in modalità protetta a 32/64 bit). Lo studio di questo tipo di programmazione assembly, non ti porterà molto lontano perchè, ad un certo punto, vedrai che non è utilizzabile praticamente nei sistemi moderni.
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
12/04/10 9:26
robrock80
Avevo intenzione di cominciare da quello 8086 perchè più semplice, poi piano piano avevo intenzione di passare a quello 386 e infine a quello più moderno. Ok... Sono costretto a studiare in inglese, ma a parte i manuali di INTEL che sono sicuramente per gente esperta, ce nè qualcuno per gente meno esperta?
aaa
12/04/10 9:42
nessuno
Se vai su Amazon ce ne sono tanti ... ma è l'argomento che non si presta a "gente meno esperta" e quindi i libri disponibili non sono del tipo "parti da zero e impara l'assembly".
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
12/04/10 9:52
robrock80
Non parto proprio da zero: conosco a livello base l'architettura del processore 8086 (stack, registri, indirizzamento della memoria tramite offset)... Senti, questo
amazon.com/Assembly-Language-x86-Processors-6th/dp/013602212X/…
va bene?
aaa
12/04/10 9:57
robrock80
Non parto proprio da zero: conosco a livello base l'architettura del processore 8086 (stack, registri, indirizzamento della memoria tramite offset)... Senti, questo
amazon.com/Assembly-Language-x86-Processors-6th/dp/013602212X/…
va bene?
aaa