[low] VRAMにアセンブラで直書き

アセンブラを触ってみるとなんというかスイッチをいっぱい触ってる気分になる。
で、今日やってみたのがBIOSを使わずVRAM(メモリ上のディスプレイ領域)に直書きしてみること。
ソースはこんな感じ。

[ORG 0]
        jmp 07C0h:start
start:
        mov AH, 0x00
        mov AL, 0x13
        int 0x10
        mov AL, 0x00
        int 0x10
        mov ax, 0xB800
        mov ds, ax
        mov di, 0
        mov al, 'A'
        mov [di], al
        add di, 2
hang:
        jmp hang
        times 510-($-$$) db 0
        dw 0AA55h

参考:http://community.osdev.info/index.php?bochs

        mov AH, 0x00
        mov AL, 0x13
        int 0x10
        mov AL, 0x00
        int 0x10

ここの部分でVRAMをグラフィックモードにしてまたテキストモードに戻してってやる(画面をいったん消すため)で

        mov ax, 0xB800
        mov ds, ax
        mov di, 0
        mov al, 'A'
        mov [di], al
        add di, 2

ここの部分でVRAMに直書きするとqemuの画面にごんぶとなフォントで「A」と表示された。
ちなみに実行の仕方は一番上のソースをvram.asmとかで保存して

$ nasm vram.asm
$ qemu -fda vram

でOK。
次回はVRAMのグラフィックモードで何かをやってみる予定。