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!」で上書きしたい。
なぜこの結果が得られるのか誰か知っていますか?