    .code16
    .arch i386
    .section ".boot"
    .org 0
    .global start
start:
    pushw   %ds
    mov     %cs, %ax
    mov     %ax, %ds
    movw    $msg, %si
    cld
    movw    $0x0007, %bx
    movb    $0x0e, %ah
1:
    lodsb
    testb   %al, %al
    je      99f
    int     $0x10
    jmp     1b
99:
100:
    jmp     100b
    popw    %ds
    xorw    %ax, %ax
    lret
msg:
    .asciz "Hello, World!\r\n"
msg_end:
    .org 510
    .word 0xaa55           # Boot signature
