マイペースなプログラミング日記

DTMやプログラミングにお熱なd-kamiがマイペースに書くブログ

ブートセクタプログラミング オセロ盤


以下のソースコードをnasmでアセンブルしてqemuで実行すると上の画像のようになる。現在47バイト使ってる

cpu  8086
bits 16
org  0x7C00

    ; init display
    xor ah, ah
    mov al, 0x12
    int 0x10

    ; draw mode
    mov ah, 0x0C
    
    ; cx = x, dx = y
    mov cx, 0x100
    mov dx, 0x100

draw_board:

    ; vertical edge check
    mov bx, 0x1F
    and bx, cx
    je set_black
    
    ; horizontal edge check
    mov bx, 0x1F
    and bx, dx
    je set_black
    
    ; dot color is green
    mov al, 0x02
    
draw_dot:
    ; draw
    int 0x10
    
    ; x--
    dec cx
    
    ; if x != 0 then drawboard
    jne draw_board
    
    ; cx = 0x100
    inc ch
    
    ; y--
    dec dx
    
    ; if y != 0 then drawboard
    jne draw_board

fin:
    hlt
    jmp fin

set_black:
    ; dot color is black
    xor al, al
    jmp draw_dot

    times 510 - ($ - $$) db 0x00
    dw 0xAA55