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

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

解説編?

B8 03 00 CD 10 B4 0E BE 17 7C 8A 04 3C 00 74 05
CD 10 46 EB F5 EB FE 48 65 6C 6C 6F 20 57 6F 72
6C 64 00

このプログラムで出てくる命令の説明。x86 16bitリアルモードで動作。0x7C00にロードされてるものとする

B8 03 00
mov ax, word 0x03
axに0x03を代入する
CD 10
int 0x10
ah == 0x00で画面初期化
B4 0E
mov ah, 0x0E
ahに0x0Eを代入
BE 17 7C
mov si, 0x7C17
siに0x7C17を代入(今回は文字列の先頭アドレス)
8A 04
mov al, [si]
alにメモリのsi番地の値を代入(今回は文字列の1文字)
3C 00
cmp al, 0x00
alと0x00を比較する(引き算を行う)
74 0x05
je 0x05
直前の比較結果が0の場合ジャンプする(今回はループから抜ける)
CD 0x10
int 0x10
ah == 0x0Eのとき文字alを出力
46
inc si
siの値を1増やす(今回は文字列へのアドレスを1増やす)
EB F5
jmp 0xF5
ジャンプする
EB FE
jmp 0xFE
無限ループ
48 65 6C 6C 6F 20 57 6F 72 6C 64 00
文字列 Hello World