汇编语言关于SHL指令的简单应用

如图所示,输入了字符A,输出的是A的ASCII值。
这是怎么做到的,从绿色字体开始看不懂。
1.DL=30H有什么作用?2.输出的是DL,是DL中的二进制数还是啥?

img

这学习 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        ;