I am not great with assembly and usually use the AT&T syntax also. I have however written a bootloader before.
Hopefully you have learnt about the segmented addressing system used in 16 bit applications. The cs
register holds the code segment. http://wiki.osdev.org/Segmentation
jmp 0x07C0:START ;This is a long jump
jmp segment:offset
A long jump sets the cs
register to segment parameter and then does a jump to the offset parameter. When you do a short jump the cs
register doesn't change. I assume that it would contain 0x0
. You can use a short jump but you must tell your assembler or linker where the code will be run.
EDIT: After reading the code again there is the [org 0x00]
line. This sets the cs
register to 0x00
by default. If you wanted to use the short jump try changing this line to [org 0x7c00]