Heh, I'm starting to actually understand how this stuff all works. This look better?
; x86 Assembly Bootloader
; Author: William LaFrance
[BITS 16]
[ORG 0x7C00]
MOV BX, 0x2000 ; Segment location to read to
MOV ES, BX ; Segment location to read to (moves from temporary location)
MOV BX, 0x0000 ; Offset to read into
MOV AH, 0x0002 ; BIOS read sector function
MOV AL, 0x0001 ; Number of sectors to read
MOV CH, 0x0001 ; Track to read from
MOV CL, 0x0002 ; Sector to read from
MOV DH, 0x0001 ; Head to read from
MOV DL, 0x0000 ; Drive to read from
XOR EAX, EAX
.READ
INC EAX
CMP EAX, 3 ;If EAX = 3
JE .FAIL ;Goto .FAIL
INT 0x0013
JC .READ
JMP 0x2000:0x0000
.FAIL
; I don't know, we do something really bad though!
TIMES 510-($-$$) DB 0 ; Fills unused sector space with 0s
DW 0xAA55 ; Adds the bootloader signature to the ending