2016-11-25 3 views
1

はなぜ結果は、私が期待される結果を確認するために行う必要がありますどのような変更(8)アセンブリ:??2で乗算(SHL)

mov dl, 4  ;dl=00000100=4 
shl dl, 1  ;dl=00001000=8 
mov ah, 2 
int 21h 

代わり◘のスペース(32)であるのでしょうか?

+2

スペースとはどのように分かりますか? –

+5

'8'は非標準の印刷文字です。これは端末によって* backspace *と解釈されることさえあります。 –

+0

ああ、ありがとう、今私はそれを得る:) – quinnyke

答えて

3

DOSは、この関数呼び出しで指定したASCIIコードを解釈しています。値8はバックスペースを表しているので、DOSがそれを行います。

予想される結果を確認するには、どのような変更を行う必要がありますか?

ビデオBIOS機能0Ah、WriteCharacterAtCursorを使用してください。

mov cx, 1  ; Replication count 
mov bh, 0  ; Display page 
mov al, 8  ; Character code (00000100 << 1 == 00001000) 
mov ah, 0Ah  ; Function number 
int 10h   ; Call the video BIOS interrupt