質問: 4 mov ax, 0x07c0 mov ds, ax mov ah, 0x0 mov al, 0x3 int 0x10 compere: mov cx, 2 add cx, 3 loop: jmp loop times 510 - ($ - $$) db 0 db 0x55 db 0xaa ```
回答: CXレジスタは、16bitですね。アスキーコードと言うと、8bit ... 半角英数字になるでしょうか。 文字として使える範囲は、 0-9, A-Z, a-z と幾つかの記号。 良く使われる方法としては、CXレジスタの値を 4bitづつ分解し、4文字のアスキーコードにして出力する事でしょう。 4bit のデータは、0-9, A-F の文字に対応させるだけです。(0-9,A-F の配列アクセスが容易ですが、、、) 簡単には、 0x41 を加算すれば、A-P の文字になると思うので、それを出力すれば、良いと思います。 4bitに分割するには、 CX レジスタのシフトとマスクで簡単にできると思います。 ところで、INT 0x10 で文字出力を行う方法ですが、AHレジスタとか、BXレジスタの設定は必要ないでしょうか? (この辺、詳しくないので、違ってたらすみません)