PDA

Visualizza la versione completa : Assembler


Molok
29-12-2002, 20:49
Cosa devo avere per programmare in assembler(che compilatore devo avere) e dove lo posso trovare?
Dove posso trovare un manuale per l'assembler?

$$$
29-12-2002, 21:01
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

Molok
29-12-2002, 22:29
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? :dh: :dh:
Se hai tempo fammmi un bel discorso e mandamelo in pvt

Johnny_Depp
29-12-2002, 22:38
una guida per iniziare a capire l'assembly (leggi il link nel mio post)
http://forum.html.it/forum/showthread.php?s=&threadid=344345&perpage=15&highlight=assembler&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

$$$
29-12-2002, 22:42
.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

Molok
30-12-2002, 15:25
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 :jam:
ma cosa? Vi prego non ridete della mia ignoranza :bh:

$$$
30-12-2002, 16:00
allora...

1) quello un programma a 16bit x dos.
con che versione di tasm lo stai compilando?

$$$
30-12-2002, 16:01
.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

Molok
30-12-2002, 19:09
Era tutta colpa del tasm 3.1 ho scaricato il 4.0 e funziona tutto alla perfezione non so il perch ma FUNZIONA!!! :p :p :p
Finalmente posso divertirmi a programmare in assembler :metallica
Avro presto nuovi quesiti per voi :gren: :gren: :gren:

r0x
30-12-2002, 19:33
Evviva, evviva, evviva .. :tongue: :quipy:

Loading