关于在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,这是不正确的。
欢迎提出解决方案。
谢谢!
答案 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
包含一个共同的字母,它将转换为该字母的大写版本。如果是已经包含一个大写字母,它将保持不变。)