Cosa devo avere per programmare in assembler(che compilatore devo avere) e dove lo posso trovare?
Dove posso trovare un manuale per l'assembler?
Cosa devo avere per programmare in assembler(che compilatore devo avere) e dove lo posso trovare?
Dove posso trovare un manuale per l'assembler?
un assembleatore e un linker...
assembleatore hai...
MASM
TASM
NASM
ecc...
quelli che vuoi... poi dipende... ASSEMBLER su che processore lo vuoi?!
manuali? THE ART OF ASSEMBLY LANGUAGE PROGRAMMING
e la lista interrupts x BROWNS
MASM x Win32
http://spiff.tripnet.se/~iczelion/files/masm32v7.zip
MASM x DOS/Win16
http://spiff.tripnet.se/~iczelion/files/masm32v7.zip
e scarichi un LINKER a 16bit (SEGMENTED EXE)
oppure ALINK.exe
allora ho scaricato MASM x Win32 adesso cosa faccio? Mi puoi fare un esempio semplice di programma in assemble tipo la visualizzazione di un registro a video.
Ma devo usare BINTODB per scrivere il listato?
Poi come faccio a linkarlo e a eseguirlo?
Se hai tempo fammmi un bel discorso e mandamelo in pvt
una guida per iniziare a capire l'assembly (leggi il link nel mio post)
http://forum.html.it/forum/showthrea...r&pagenumber=2
all'interno del pacchetto (directory) in cui
è presente l'asm (masm tasm nasm) troverai
sicuramente un file di TESTO
che ti spiega i comandi per compilare linkare ed eseguire
un programma in assembly
...Terrible warlords, good warlords, and an english song
codice:.386 .model flat, stdcall option casemap: none include \masm32\include\windows.inc include \masm32\include\user32.inc include \masm32\include\kernel32.inc includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib .data style db "Il regitro EAX contiene: ""%d"".", 0 buffer db 255 dup (0) .code start: mov eax, 5326 ; valore del registro! push eax push offset style push offset buffer call wsprintf push MB_ICONINFORMATION or MB_OK push 0 push offset buffer push 0 call MessageBoxA push eax call ExitProcess end start
allora il file prima lo passi a
ML.EXE /c /coff NOME.ASM
poi a
LINK.EXE /SUBYSTEM:WINDOWS NOMEUSCITO.OBJ
Allora seguendo il consiglio di johnny ho trovato un tutorial
il primo esercizio del tutorial è questo:
;TUT4.ASM (Hello Word)
.MODEL small ; indica al compilatore il modello di memoria da usare
.STACK 100h ; dimensiona lo Stack
.DATA ; inizio del segmento dati
Messaggio DB "Salve Mondo",13,10,'$' ;dichiarazione del messaggio
.CODE ; inizio del segmento di codice
mov ax,SEG Messaggio ; ax = indirizzo del Segmento Dati
mov ds,ax ; ds = ax
mov dx,OFFSET Messaggio ; ds = offset del Segmento Dati
mov ah,09h ; ah = 09h
int 21h ; chiamata all'interrupt DOS
mov ah,4Ch ; ah = 4Ch
int 21h ; chiamata all'interrupt DOS
END ; fine delprogramma
Come cavolo faccio a eseguirlo?
Il tutorial mi dice di usare il dal promt di dos il comando
tasm tut4.asm (ho scaricato tasm 3.1)
solo che mi dice questo:
D:\Tasm>tasm tut4.asm
TASM Assembler. Version 3.1 February, 1998.
Copyright (C) 1998 Squak Valley Software
tasm: pass 1 complete.
tut4.asm line 0002: unrecognized directive. (.MODEL)
tut4.asm line 0003: unrecognized directive. (.STACK)
tut4.asm line 0005: unrecognized directive. (.DATA)
tut4.asm line 0006: Label not found: (Messaggio)
tut4.asm line 0006: label value misalligned. (Messaggio)
tut4.asm line 0006: unrecognized instruction. (Messaggio)
tut4.asm line 0008: unrecognized directive. (.CODE)
tut4.asm line 0009: unrecognized instruction. (MOV)
tut4.asm line 0010: unrecognized instruction. (MOV)
tut4.asm line 0011: unrecognized instruction. (MOV)
tut4.asm line 0012: unrecognized instruction. (MOV)
tut4.asm line 0013: unrecognized instruction. (INT)
tut4.asm line 0014: unrecognized instruction. (MOV)
tut4.asm line 0015: unrecognized instruction. (INT)
tasm: line 0016 No END directive before EOF.
tasm: pass 2 complete.
tasm: Number of errors = 15
Questo mi fa pensare che probabilmente ho sbagliato qualcosa
ma cosa? Vi prego non ridete della mia ignoranza
allora...
1) quello è un programma a 16bit x dos.
con che versione di tasm lo stai compilando?
.MODEL small ; indica al compilatore il modello di memoria da usare
.STACK 100h ; dimensiona lo Stack
.DATA ; inizio del segmento dati
Messaggio DB "Salve Mondo",13,10,'$' ;dichiarazione del messaggio
.CODE ; inizio del segmento di codice
INIZIO:
mov ax,SEG Messaggio ; ax = indirizzo del Segmento Dati
mov ds,ax ; ds = ax
mov dx,OFFSET Messaggio ; ds = offset del Segmento Dati
mov ah,09h ; ah = 09h
int 21h ; chiamata all'interrupt DOS
mov ah,4Ch ; ah = 4Ch
int 21h ; chiamata all'interrupt DOS
END INIZIO; fine delprogramma
Era tutta colpa del tasm 3.1 ho scaricato il 4.0 e funziona tutto alla perfezione non so il perchè ma FUNZIONA!!!
Finalmente posso divertirmi a programmare in assembler :metallica
Avro presto nuovi quesiti per voi :gren: :gren: :gren:
Evviva, evviva, evviva .. :tongue: :quipy: