4

VGAメモリに書き込む簡単なコードを作成しました。

org 07c00h
  mov eax,0xb8000
  mov bx,msg
  call printstr
printstr:


  mov al,byte[bx]
  mov byte[eax],al
  inc eax
  mov byte[eax],1
  inc eax
  inc bx
  cmp byte[bx],0
  je end
  jmp printstr

end:
  jmp end
msg: db "Hello world!",0
times 510-($-$$) db 0
dw 0xaa55

しかし、「Hello world」と書く代わりに、QEMUで実行するとこれが行われます。NASMを使って組み立てました。 画像

最初の行の最初の 12 文字を「Hello world!」で上書きしたい。

なぜこの結果が得られるのか誰か知っていますか?

4

1 に答える 1