关于INC和DEC的MS-Debug

时间:2014-08-20 15:55:01

标签: assembly

关于在MS-Debug程序中使用inc(递增)和dec(递减)的问题。

示例:

如果输入是用小写字母输入的,则输出必须显示5个连续字母,这些字母在使用ASCII时以大写字母递增。

模拟:

    e (input)
    FGHIJ (output)

    another example
    s (input)
    TUVWX (output)

代码基于简单的调试

这里的代码至今仍然存在。

    mov ah, 01
    int 21
    mov dl, al
    mov ah, 02
    int 21
    mov dx, 61 (ascii for small letter a)
    mov bx, 20 (difference to get the Capital letter)
    sub dx, bx
    inc dl
    int 21
    inc dl
    int 21
    inc dl
    int 21
    inc dl
    int 21
    inc dl
    int 21
    int 20

当输入任何小写字母时,它仍然是固定值,下一个连续字母是BCDEF,这是不正确的。

欢迎提出解决方案。

谢谢!

1 个答案:

答案 0 :(得分:0)

在开始输出字符之前,您正在为值dx分配61h - 20h,因此难怪您始终获得相同的输出。

我建议您删除以下三行:

mov dx, 61 (ascii for small letter a)
mov bx, 20 (difference to get the Capital letter)
sub dx, bx

并将其替换为and dl,DF,这将清除dl的第5位(即如果dl包含一个共同的字母,它将转换为该字母的大写版本。如果是已经包含一个大写字母,它将保持不变。)