对DOSSHELL的一点小改动
如果我们键入的是小写的n(即ASCII码Ox6E),则返回DOS下;如是N(ASCII码Ox4E)则继续显示:
Unable to load MS-DOS Shell,Retry (y/n)?
我们知道一般的软件如出现要求键入一个字符(如菜单中的热键)时,尤其是象回答Y或N这样的情况,它应该是不分大小写的!否则的话当你按下N键而键盘却处于大写状态下但你不知,让人产生程序有误或键盘失灵的错觉。笔者通过分析DOSSHELL.COM,利用DEBUG把它修改成对大小写都能响应。
步骤如下:
C:\DOS>DEBUG DOSSHELL.COM <CR>
-R CX ;查看文件长度
CX 120F
:
-S 100 120F 3C 6E ;搜索 CMP AL,6E(与'n'比较)
119B:0285
-U 285 290
119B:0285 3C6E CMP AL,6E
119B:0287 90 NOP
119B:0288 90 NOP
119B:0289 740C JZ 0297
119B:028B 3C79 CMP AL,79 ;与'y'字符比较
119B:028D 90 NOP
119B:028E 90 NOP
119B:028F 7402 JZ 0293
-A 285
119B:0285 OR AL,6O ;把键入的键值和Ox60相或,得到的是该键的小写值,
119B:0287 CMP AL,6E ;这样不管键入的是大写还是小写,程序收到的都是小写。
119B:0289
-W
Writing 012OF bytes
-Q
笔者用的DOS版本是5.00。(浙江 徐晓伟)