title: Hello World bootloader hanging after first character
body: <p>I am using this code for a Hello world bootloader. Instead of printing out "Hello world\n" it just prints out a 'H' and hangs. I have used loadsb print out the message successfully but I can't understand why this approach won't work as it seems equivalent.</p>
  
  <pre><code>[ORG 0x7c00]
  [BITS 16]
  
      xor ax, ax  ;make it zero
      mov ds, ax
  
      mov ecx, msg
  bios_print:
      mov al, [ecx]
      add ecx,1
      cmp al, 0  ;zero=end of str
      je hang    ;get out
      cmp al,100
      jge hang
      mov ah, 0x0E
      int 0x10
      jmp bios_print
  
  
  hang:
      jmp hang
  
  msg   db 'Hello World', 13, 10, 0
  
  
  
  
  
  
     times 510-($-$$) db 0
     db 0x55
     db 0xAA
  </code></pre>
  
  <p>Edit:
  I changed the [BITS 64] to [BITS 16]</p>