如图所示,输入了字符A,输出的是A的ASCII值。
这是怎么做到的,从绿色字体开始看不懂。
1.DL=30H有什么作用?2.输出的是DL,是DL中的二进制数还是啥?
这学习 X86 汇编就要熟悉 INT 21H 的使用。你可以在百度上搜索 "DOS 中断 21 的使用“
这个例子用了3个不同的 INT 21H
1:AH=1 的 INT 21H 是读键盘
2:AH=2 的 INT 21H 是显示一个字符,这个字符放在 DL 中
3:AH=4CH 的 INT 21H 是退出。
这个例子 如果去掉红色的部分,屏幕会显示 12345678
MOV CX,8 ; 为LOOP 指令设定循环次数
L2: MOV DL,30H ; 30H 等同与 '0' 是 0 字符的 ASCII
SHL BL,1 ; BL 左移一位
JNC L1 ; 判断有无进位,进位=0 跳转到L1。上一指令 SHL BL,1 如果BL的 bit7 为 1 ,左移指令会产生进位=1
ADD DL,1 ; 有进位,DL +1 后等于 031H 也就是字符 '1'
L1: INT 21H ; 显示 DL 里的字符
LOOP L2 ; LOOP 指令执行会使 CX -1 后判断 CX 是否为 0 ,不是 0 跳转到 L2 。
MOV AH,4CH ; INT 21H 功能号 4CH 退出
INT 21H ;