2012-03-14 8 views
1

このプログラムでは、ASCIIコードとそのカラーコードをヘキサ値と一致させて出力します。私の問題は、7-13のヘキサが現れないことです。一部のヘキサ値が出力されない

.model small 
.code 
org 100h 
s:jmp main 
b dB 0h 
d dB 000h 
main proc 


x:call color 
mov ah,2 
mov dl,b 
int 21h 
inc b 
cmp b,14 
jna x 
int 20h 

color proc 
mov ah,9 
mov al,'' 
mov bl,d 
mov cx,1 
int 10h 
inc d 
ret 
color endp 

main endp 
end s 

答えて

1

問題は、その範囲内の文字が表示する画像(グリフ)を持っていないが、タブや改行のように、制御文字として使用されることです。宿題は、16ビットのx86 ASMとDOSソフトウェア割り込みを書い含む場合、クラスを教えているところ

http://www.asciitable.com/

+0

私は見ていますが、私はそれらを単独で出力しようとしました。例えば、私はちょうど0aとその一致するカラーコードを使用しました。問題は、他のhexa値で出力しようとしたときに発生します。私は0時から20時までの出力にascii文字とそのカラーコードを表示させたい – WannaCSharp

0

まず、この表を参照してください、あなたは私を伝えることができますか?私はいくつかの学校が古典を教えることに気をつけているのは素晴らしいことだと思っています。 :-)

次に、あなたのプログラムが何をしているのかを明確にしたい:all 16 colors in the BIOS color attribute tableを紹介しようとしていますか?そして、どの文字を印刷したいですか? Bo Perssonがすでに回答しているため、ASCII文字は印刷できないため、低ASCII文字は印刷できません。

あなたのコードでは2つの別々の割り込みが使用されていますが、それらは矛盾している可能性があります。最初はint 21h/ah = 02hです:STDOUTに文字を書き込みます。これはDOS割り込みです。 2番目の文字はint 10h/ah = 09hです。画面に文字と属性を書き込みます。これはビデオ割り込みです。あなたが望むものだと思います。その2番目の割り込みに頼ってみてください。 alhに30h(ASCII '0')を書きます。これは異なる色の0を出力します。

関連する問題