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
	pop	ds

	mov	ah,9
	mov	dx,hello
	int	21h

	mov	ax,4C00h
	int	21h

hello db 'Hello world!',24h
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