#define LOAD_ADDR 0x7c00 #define BUF0_ADDR 0x0600 #define BUF1_ADDR 0x0800 #define START_OFFSET 0x5a #define TABLE_OFFSET 0x1be .org BUF0_ADDR jmp entry_point .org BUF0_ADDR+START_OFFSET entry_point: cld xor ax,ax mov ss,ax mov sp,ax mov ds,ax mov es,ax mov si,#LOAD_ADDR mov di,#BUF0_ADDR mov cx,#0x100 rep movsw jmp 0:next next: mov ax,#0x0201 mov bx,#BUF1_ADDR mov cx,#0x0002 mov dx,#0x0080 int 0x13 mov si,#BUF1_ADDR mov di,#LOAD_ADDR mov cx,#TABLE_OFFSET/2 rep movsw jmp 0:LOAD_ADDR .org BUF0_ADDR+0x1fe dw 0xaa55