Originariamente inviato da FinalFantasy
Dopo una ricerca su google, sn riuscito a trovare un compilatore assembler...ci sn degli esempi, ma non li capisco. Dunque...un programma per stampare una frase intera esegue questo codice

codice:
format MZ                  ;
                           ;
	push	cs         ; salva in una pila il code segment
	pop	ds         ; tira fuori dalla pila il data segment
                           ;
	mov	ah,9       ; operazione fatta di default per la scritta a video
	mov	dx,hello   ; dx riceve il contenuto della variabile hello cioè Hello world!
	int	21h        ; INTerrupt: "chiamata" a una procedura (subroutine) che ti stampa a video la scritta
                           ;
	mov	ax,4C00h   ; queste due istruzioni servono a 
	int	21h        ; passare il controllo da TASM al OS
                           ;
hello db 'Hello world!',24h; dichiarazione di variabile
1) Cosa fa la prima riga?
2) A che servono push e pop?
3) Per stampare a video, non si usa mov ah, 02h?
4)La riga 7 (contate pure le righe vuote) mette in dx questo 'hello', ma in basso troviamo hello db '',24h, sapete spiegarmi con esattezza che fa questa sinstassi?

Grazie a tutti e buona notte
3) mov ah,02 passa al registro ah (8 bit) il numero 2 che in binario corrisponde a 0010, cmq ci sono migliaia di modi per gestire le scritte a video ma non sono tutte uguali e quindi ogniuna ti fa fare qualcosa di diverso rispetto ad un'altra