高手帮忙看看这段汇编代码

来源:百度知道 编辑:UC知道 时间:2024/05/16 20:36:35
下面的代码作用是从键盘输入一个数字(0~9),然后以二进制形式在屏幕输出那个数。编译链接执行后,发现无论输入哪个数字,显示都是00000000,即CF位一直为0,但我明明用SHL命令把AL的最高位放入了CF中啊

assume cs:code
code segment
start: mov cx,8
mov ah,01h
int 21h
and al,0fh
lp: shl al,1 ;al左移一位,最高位放入CF中
lahf
and ah,01h ;将CF位取出
mov dl,ah
or dl,30h ;转换成ascii码,以便输出
mov ah,02h ;调用2号中断,显示dl中内容
int 21h
loop lp
jmp start
code ends
end start

终于在DEBUG 里面找到原因了:
是那条指令int 21h :虫子就在里面。我在捉虫的时候发现它把我的AL里面的东西糟蹋了,太不应该,那就是错误的原因啊。好了,再前面保护好我们宝贵的AL,就万事OK!