Day 19
Reading Files
	Note that when we read files in assembly language that we tell DOS to retreive so many
bytes from the file and we aren't just reading line-by-line, although it would be possible (but perhaps
ineffient) to read byte-by-byte.
Opening and Reading a File
	Before we can read anything, we need to open it first:
		jmp start
		filename db 'elmo.txt',0	
		handle dw 0   ; will be the file handle. the number that DOS assigns to the open file.
		buffer db 255 DUP 0  ; make a plain buffer (not a strange input one like before).
	start:
		mov ah,3Dh   ; 3Dh of DOS Services opens a file.
		mov al,0   ; 0 - for reading. 1 - for writing. 2 - both
		mov dx,offset filename  ; make a pointer to the filename
		int 21h   ; call DOS
		mov handle,ax   ; Function 3Dh returns the file handle in AX, here we save it for later use.
	DOS Service Function number 3Fh reads from a file.
		mov ah,3Fh
		mov cx,4   ; I will assume ELMO.TXT has atleast 4 bytes in it. CX is how many bytes to read.
		mov dx,offset buffer  ; DOS Functions like DX having pointers for some reason.
		mov bx,handle    ; BX needs the file handle.
		int 21h   ; call DOS
	Here we will put a $ after 4 bytes in the buffer and print the data read:
		mov dx,offset buffer
		add dx,ax    ; Function 3Fh returns the actual amount of bytes read in AX (should be 4 if
				; nothing went wrong.
		mov bx,dx
		mov byte [bx],'$'   ; byte pointer so we don't mess with the whole word (a word is 16bits).
	Print!!:
		mov dx,offset buffer  ; put the pointer back in DX.
		mov ah,9
		int 21h    ; call DOS Function 9 (Print String).
		mov ah,4Ch
		int 21h      ; Function 4Ch (Exit Program)
	
It looks like a lot like that, but don't forget that you can make your own subroutines and CALL them.
This Day In Review
	Tomorrow, we get input and then write it to a file!
	Have fun!,
		- Mike H a.k.a GbaGuy
Intro - Day 20
Patater GBAGuy Mirror
Contact