[ORG 100h]

mov ax,0xb800		; Set es to point to text memory
mov es,ax
xor di,di		; Zero di

mov cx,0x3c0		; Half the screen
mov al,0xb0		; Character block thingy
mov ah,0x7		; Attribute
firsthalf:		; Now do the first half of the screen
mov [es:di],ax		; Copy character to screen
inc di			; Go foward a character
inc di
loop firsthalf		; Loop till done

mov ax,cs		; Set up our datasegment
mov ds,ax

mov si,text		; si to point to string
mov ah,0x7		; Attribute
textloop:
mov al,byte [si]	; Put character in string into al
mov [es:di],ax		; Put onto screen
inc di			; Move text memory pointer foward
inc di
inc si			; Move string pointer forward
cmp byte [si], 0	; At the end of the string ?
jnz textloop		; If not, continue looping

mov cx,0x3c0		; Half the screen
mov al,0xb0		; Character block thingy
mov ah,0x7		; Attribute
secondhalf:
mov [es:di],ax		; Copy onto screen
inc di			; Move forward
inc di
loop secondhalf		; Loop till done

ret			; And back to DOS we go..

;General data
text db '              GASM -=- The Ultimate Assember -=- http://gasm.cjb.net            ',0
