いくつかの問題があります:
などの指示はありませんsdl
。
データをコピーするにはrep movsw
、 ではなくを使用する必要がありますrepnz movsw
。
cx
の前に設定する必要がありますrep movsw
。
各文字の色も、ビデオ メモリの 1 バイトおきに、 でコピーされるデータrep movsw
内、またはコピー ループ内で定義する必要があります。以下のコードは、両方のオプションを示しています。
編集:コードを追加しました。
[ビット 16]
[組織 0x7c00]
ムーブアックス、3
整数 10h
プッシュワード 0xb800
ポップエス
cs を押します。念のため、ブートローダ コードについては、
ポップDS; movsb に必要
xor di,di
mov si,msg
mov cx,msg_length_in_bytes
one_color_copy_to_vram_loop:
movsb
移動,0x0f
ストーブ
ループ one_color_copy_to_vram_loop
mov si,multicolor_msg
mov cx,multicolor_msg_length
担当者movsw
ジャンプ $
msg db 'こんにちは'
msg_length_in_bytes equ $-msg
multicolor_msg データベース ' ',0
デシベル 'H',1
データベース 'e',2
データベース 'l',3
データベース 'l',4
デシベル 'o',5
デシベル ' ',0
デシベル 'w',6
データベース「私」、7
デシベル 't',8
デシベル 'h',9
デシベル ' ',0
データベース 'c',10
デシベル 'o',11
データベース 'l',12
デシベル 'o',13
データベース 'r',14
デシベル '!',15
multicolor_msg_length equ ($-multicolor_msg)/2