ASM [AIUTO] Problema visualizzazione caratteri/frasi nella finestra DOS...

Stato
Discussione chiusa ad ulteriori risposte.

sNoOoB

Utente Gold
28 Settembre 2010
887
34
59
230
Ultima modifica:
Salve i-f :matto:

Ho seguito questa guida:
Beh, direi di iniziare subito, elencando i tools che verranno usati in questa prima lezione:
  • un assemblatore. Io userò l'A86, un buon assembler shareware e semplice da usare. Lo trovate a A86 assembler.
  • un qualsiasi editor di testo, ad esempio il notepad oppure l'"edit.com" del Dos.
  • una lista di interrupt, ad esempio quella di Ralph Brown, che trovate qui. Questa lista non è strettamente necessaria…tuttavia è meglio averla, perché poi la userete spesso come "technical reference". A proposito: non preoccupatevi se non sapete cos'è un interrupt, dopo vedremo tutto con calma.

E’ necessario utilizzare un editor di testo: praticamente tutti gli assemblatori, infatti, non hanno un ambiente integrato (cioè non hanno un loro editor) ma funzionano a riga di comando.

Per prima cosa, quindi, creiamo un file in cui verrà salvato il codice del nostro primo programma in assembly…chiamatelo come volete, ma è meglio se gli assegnate l’estensione “.asm”. Io l’ho chiamato “lezione1.asm”. E’ meglio crearlo nella directory in cui è stato copiato l’A86. Apriamo il file con l’editor, ed iniziamo a scrivere il programma!

Uhm, il programma più semplice che possiamo scrivere è quello che non fa nulla…l’unica operazione che deve fare è il ritorno al Dos. Il ritorno al sistema operativo è indispensabile; sotto Dos bisogna fare così:
mov ah,4ch
mov al,00h
int 21h
Scriviamo queste tre linee nel file “.asm”, e salviamo il file. A questo punto, dobbiamo compilare il codice che abbiamo appena scritto. Con l’A86 è semplice: basta prendere il file “.asm” e trascinarlo sul programma “a86.com” (oppure, una volta aperto il Prompt del Dos, basta posizionarsi nella directory in cui è stato copiato l’A86 e digitare “a86 lezione1.asm”).
Se non ci sono stati problemi, vediamo comparire nella directory il file “lezione1.com”. Proviamo a lanciarlo, e vediamo che non fa assolutamente niente…gran cosa, eh?

Prima di capire il significato di quelle tre righe di codice, aggiungiamo qualche altra operazione in modo da visualizzare qualcosa sullo schermo (mi sembra il minimo…). Allora, apriamo di nuovo il nostro “lezione1.asm” e aggiungiamo:
mov ah,02
mov dl,65 ;codice ascii della lettera ‘A’
(Penso che fin qui possa bastare..)

E ho risconrato alcuni problemini.. Voi direte: Come? Devi fare solo un copia-incolla.. Ebbene..

1° Problema: se trascino il file .asm su A86.COM, si apre la finestra dei comandi, si chiude e non succede nulla..
Ho ovviato il problema, eseguendo la compilazione dalla finestra dei comandi, e cioè dichiarando la directory del programma e del file, ed eseguendo appunto a86 nomefile.asm.
A questo punto, risolto il primo problema.. L'asm si compila, e si avvia e, come da guida, si apre e si chiude la finestra dei comandi.
Quando aggiungo la seconda parte del codice, ricompilo, apro, e.. Stesso risultato! Ho provato anche con un altro codice:
Codice:
mov dx, offset Messaggio
	mov ah,09h
	int 21h
	mov ax,4c00h
	int 21h

Messaggio db "Hello world!$"
Stesso discorso, compilo, apro il file .COM, si apre e si riuchiude la finestra dei comandi..

Qualcuno può aiutarmi?! *_____*
 
In poche parole quando lanci il programma la finestra rimane aperte per pochissimi millisecondi ??? Lo stesso problema che avviene in C/C++ sotto windows se non metti system("pause")

Prova ad aprire il programma da terminale/cmd
 
  • Mi piace
Reazioni: sNoOoB
Ultima modifica:
Un attimo che provo! :D

--- Aggiornamento Post ---

Effettivamente funziona! :p Grazie mille, +1! °-°
 
Stato
Discussione chiusa ad ulteriori risposte.