装配:乘以2(shl)

时间:2016-11-25 20:17:50

标签: assembly x86-16 dos

为什么结果是空格?(32)而不是◘?(8)

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

我应该做些什么改变才能看到预期的结果?

1 个答案:

答案 0 :(得分: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