View Full Version : [Asm]Problema
Ho scritto sto code:
.model small
.stack
.data
Message db 'Hello World by Lucas assembler', 13d, 10d, '$'
.code
Start:
mov dx, OFFSET Message
mov ax, SEG Message
mov ds, ax
; set int 21h service 09h
mov ah, 09h
int 21h
; set int 21h service 4Ch(exit)
mov ah, 4Ch
int 21h
end Start
Ma mi da sti errori:
prova.asm:1: error: attempt to define a local label before any non-local labels
prova.asm:1: error: parser: instruction expected
prova.asm:2: error: attempt to define a local label before any non-local labels
prova.asm:4: error: attempt to define a local label before any non-local labels
prova.asm:5: error: expression syntax error
prova.asm:9: error: comma or end of line expected
prova.asm:18: error: parser: instruction expected
AnonimoVeneziano
26-06-2004, 17:23
Che assemblatore usi??
Ciao
AnonimoVeneziano
26-06-2004, 17:28
Quella non è la sintassi di NASM.
Converti così :
[BITS 16]
[ORG 0100h]
[SECTION .text]
start:
mov dx, Message
; set int 21h service 09h
mov ah, 09h
int 21h
; set int 21h service 4Ch(exit)
mov ah, 4Ch
int 21h
[SECTION .data]
Message db 'Hello World by Lucas assembler', 13d, 10d, '$'
A quanto sembra il programma che avevi scritto cercava di usare i Segmenti , in questo caso ho convertito il programma in "Flat Model" per semplicità .
Assembla con :
c:\> nasm nomefile.asm -f bin -o eseguibile.com
Ciao
dove trovo na guida alla sintaxis nasm?
AnonimoVeneziano
26-06-2004, 17:42
http://nasm.sf.net
C'è la documentazione , o comunque qualsiasi libro che insegna ASM usando la sintassi NASM (quello che ti ho consigliato nell' altro thread è un esempio)
Il tuo programma comunque conteneva un errore :
Message db 'Hello World by Lucas assembler', 13d, 10d, '$'
deve diventare:
Message db 'Hello World by Lucas assembler', 13, 10, '$'
Togliendo le "d" dal "13" e dal "10" dato che il Decimale è già la base di default del NASM
Ciao
Tnk!
Cmq io volevo impararmi l'asm per il reverse enginering e per completezza.
Cmq........tu per cosa usi l'asm e ritieni che si debba usare molto oggi?
Io penso che serva conoscerlo e magari usarlo per ottimizzare ma nn serve per altro perche troppo complicato e poco gestibile per grandi progetti(a meno di fare demo di grafica in 64 kb :D )
Poi è bello sapere disassembleare un exe e capire + o - cosa fa, no?
AnonimoVeneziano
26-06-2004, 17:57
Sinceramente io sto imparando l'ASM per pura voglia di conoscienza :)
Non ho in mente nessun grande progetto da eseguire con asm , però l'asm ti permette di capire a fondo come funziona il tuo computer , e ti da il controllo totale su tutto :)
Prima di iniziare a imparare l'ASM cos'era una "Interrupt Vector Table" , o la differenza tra "interrupt software" e "interrupt hardware" , cosa fosse il dispatcher di un sistema operativo , quale fosse il principio alla base di una CPU ... erano tutti concetti a me ignoti , l' ASM ti permette di capire a fondo tutto ciò, e già tutto questo per me è sufficiente .
Io sapevo già programmare un pochino in C , ma nonostante io ne sappia molto + di C che di ASM in questo momento , imparare quel poco di ASM mi ha permesso di apprendere molto di + sul mondo dell' elaborazione elettronica che tutto il libro di C che mi ero letto in precedenza .
Inoltre , sarà vero che l'ASM è complicato , ma ti permette anche di fare cose che altri linguaggi non ti permettono :)
Ciao
anche io lo studio spinto dai tuoi motivi, sai?
Cosi capisci e comprendi di + come funzia un Pc.
AnonimoVeneziano
26-06-2004, 18:09
Originariamente inviato da Luc@s
anche io lo studio spinto dai tuoi motivi, sai?
Cosi capisci e comprendi di + come funzia un Pc.
Hai PVT :)
mmx[ngg]
26-06-2004, 18:57
Originariamente inviato da Luc@s
Tnk!
Cmq io volevo impararmi l'asm per il reverse enginering e per completezza.
Cmq........tu per cosa usi l'asm e ritieni che si debba usare molto oggi?
Io penso che serva conoscerlo e magari usarlo per ottimizzare ma nn serve per altro perche troppo complicato e poco gestibile per grandi progetti(a meno di fare demo di grafica in 64 kb :D )
Poi è bello sapere disassembleare un exe e capire + o - cosa fa, no?
Humm....ti posto un pezzo di sorgente..+ o - così come verebbe creato da un disassemblatore.
Ora....prima di compilarlo e scoprire cos'è veramente riusciresti a dire cosa fà ?
Originariamente inviato da mmx[ngg]
Humm....ti posto un pezzo di sorgente..+ o - così come verebbe creato da un disassemblatore.
Ora....prima di compilarlo e scoprire cos'è veramente riusciresti a dire cosa fà ?
:eek:
mmx[ngg]
26-06-2004, 20:22
Ho riletto ora un pò dei tuoi messaggi....mi sa ke la domanda ke ti ho fatto è un po prematura....come non detto.
Cmq volevo semplicemente farti capire ke da un disassemblato è un'impresa sapere cosa faccia un programma....ti ci vuole mezza vita.
Pensa ke x soli 350 bytes (il compilato di quello ke ti ho postato) ci sono voluti 4k di sorgente...figurati x un normale eseguibile :muro:
E il tutto senza un briciolo di commento, variabili o label significative.
L'apprendimento dell'assembler deve essere visto in un'altra ottica. Il reverse enginering e l'ultima spiaggia da sfruttare solo quando si ha una totale conoscenza del linguaggio (lo devi leggere come un libro) altrimenti diventa una perdita di tempo fine a se stessa. E' molto + utile impararlo x scrivere algoritmi ke in un qualsiasi altro linguaggio risultino di difficile implementazione o poco efficenti.
Questo almeno secondo le mie esperienze....poi vedi te ;)
Io voglio solo usarlo un po in modo inline nei punti critici dei miei prog.
Cmq il reversing è un idea grandissima.
Cmq posso porti una sfida?
Mi dici cosa potrebbe essere il prog dal file che ti posto?
mmx[ngg]
26-06-2004, 20:55
Originariamente inviato da Luc@s
Io voglio solo usarlo un po in modo inline nei punti critici dei miei prog.
Cmq il reversing è un idea grandissima.
Cmq posso porti una sfida?
Mi dici cosa potrebbe essere il prog dal file che ti posto?
LOL....150Kb....io sono stato un pò + clemente :sofico:
Cmq la sfida l'accetto se realmente ti serve sapere cosa fà...visto ke mi ci vogliono 2 giorni....sai com'è nel weekend vorrei fare altro e negli altri giorni lavoro :D
Originariamente inviato da mmx[ngg]
LOL....150Kb....io sono stato un pò + clemente :sofico:
Cmq la sfida l'accetto se realmente ti serve sapere cosa fà...visto ke mi ci vogliono 2 giorni....sai com'è nel weekend vorrei fare altro e negli altri giorni lavoro :D
e che il mio dis fa cosi.
Cmq se vuo...........nn sentirti obligato ;)
mmx[ngg]
28-06-2004, 15:50
Non mi sentirei obbligato neanke se mi avessi pagato :D
Cmq da una rapida occhiata non mi sembra un semplice pgm in C (esegue delle call dinamiche). Ma l'hai scritto te o l'hai beccato da qualke parte ?
Visto anke com'è scritto, lascio perdere anke xke x effettuare il reverse eng. spesso non si parte dall'entry point sino all'ExitProcess (e come leggersi tutto un libro di storia solo x sapere com'è andata la seconda guerra mondiale) ma sarebbe + inteligente utilizzare un debugger ;)
Hai provato a compilare quello ke ti ho postato ? (ke non è un disassemblato ma un vero e proprio sorgente....gli ho semplicemente cambiato le label...altrimenti era una passeggiata)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.