Despairy 0 Light Poster

hey i have a problem with a code that i cant figure out what it is
im "fresh meat" in assembly so might be a few things

what i tried to do is
1) open rnd.txt(65kb) file as read/write ( dump.exe it and you get hex numbers on dos)
2) load one 16 bytes list and sort it upwards
3) write the new list ON TOP of the old list
4)repeat 2-4 for the next 4096 lists
5) close the file

thanks for your help!

org 0x100
section .bss
	buffer resb 16
	filehandle resw 16
	x resb 1

section .data

	filename db 'c:\micro\rnd.txt', 00

section .text
	mov SI, 0
open:	mov AL, 2
	mov AH, 3dh
	mov DX, filename
	int 21h
	mov [filehandle], AX

read:	mov AH, 3Fh
	mov BX, [filehandle]
	mov CX, 16
	mov DX, buffer
	int 21h
	mov [x], SI

	mov SI, 0
	mov DI, 1
change:	mov AX, [buffer + SI]
	mov BX, [buffer + DI]
	mov [buffer + SI], BX
	mov [buffer + DI], AX
	inc DI
	cmp DI, 14
	JB change

	mov SI, 0
pointer:mov DX, SI
	add SI, 16
	mov BX, [filehandle]
	mov CX, 0
	mov AH, 42h
	mov AL, 0
	int 21h

write:	mov AH,40h
	mov BX, [filehandle]
	mov CX, 16
	mov DX, buffer
	int 21h

end:	mov AX, 0x4c00
	int 21h