2016-11-25 41 views
1

爲什麼結果是空間(32),而不是◘(8)大會:2(SHL)乘以

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

我應當怎​​樣更改看到預期的結果???

+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