; **********************************************************************
; Program POWCOM.ASM - po kompilacji typu .COM
; **********************************************************************
; W programach tych nie nastepuje ladowanie rejestru segm. danych DS
; stos tworzony w tym samym segmencie kodu na jego koncu
; nie wolno tworzyc wlasnego stosu
; Programy typu .COM sa krotsze od EXE
; Jeden segment moze miec 64 KB 

Assume	CS:Code, ds:code	   	; dyrektywa
					; inform. dla asemblera,
					; ze CS i DS bedzie
					; wskaz. na segm. kodu


code	segment				; tworzenie segmentu kodu
	org 100h			; dyrektywa zmienia zawartosc
					; pozycji asemblera
					; program rozpocznie sie od
					; adresu 100h wzgledem pocz. segm.

start:	jmp begin			; etykieta start
					; i instrukcja skoku bezwarunkowego
					; do wskazanego przez etykiete
					; lub adres miejsca - tu do begin

powitanie db 'Witaj', 0dh, 0ah, '$'	; zadeklarowanie zmiennej powitanie
					; kazde pole 1 bajt, zakonczone
					; powrotem do nowej linii i $
					; $ - konczy string dla DOS 

begin:	mov	dx, offset powitanie 	; offset zmiennej powitanie
	mov	ah, 09h			; wyswietl zawartosc lanc. na ekran
	int	21h			; wywolaj funkcje syst. DOS,
					; ktorej zmienna jest w AH

	mov	al,0			; zaladuj 0 do Al - kod powrotu 0
	mov	ah, 4ch			; zaladuj 4ch do ah - funkcja DOS
					; - zakoncz proces
	int	21h			; wywolanie przerwania 21h
					; te 3 rozkazy koncza program

code ends				; konczy segment kodu

end start				; koniec programu z informacja
					; ze wykonanie programu rozpoczac
					; od start


