标题: 菜单选择功能
[打印本页]
作者: DOSLER
时间: 2008-3-9 20:30
标题: 菜单选择功能
DOS功能调用31H或4C所提供的一字节的返回码,通过批处理子命令IF和ERRORLEVEL对返回码进行处理,可达到自动执行一批命令的目的。在批处理文件中实现所有高级语言的菜单提示功能,使批处理文件变得更加灵活方便。先用DEBUG建立一个菜单驱动程序MENU.COM,对应地编写一个批处理文件lg.bat。具体内容和方法如下:
DEBUG
-166C:0100 MOV DX,111
-166C:0103 MOV AH,09
-166C:0105 INT 21
-166C:0107 MOV AH,01
-166C:0109 INT 21
-166C:010B MOV AH,4C
-166C:010D INT 21
-166C:010F INT 20
-166C:0111 DB '***********************'0D 0A
-166C:0131 DB '*1.Turbo Pascal 5.00*'0D 0A
-166C:0151 DB '*2.Turbo Basic 1.00*'0D 0A
-166C:0171 DB '*3.Turbo Prolog 2.00*'0D 0A
-166C:01B1 DB '*3.Turbo C 2.00*'0D 0A
-166C:01B1 DB '*4.Exit*'0D 0A
-166C:01F1 DB '***********************'0D 0A
-166C:01F1 DB 'Your choicce(0..4):'24 0D 0A 1A
-166C:0209
-RCX
CX0000
:108
-N MENU.COM
-W
Writing 0108 bytes
-Q
再建立一个批处理文件,调用菜单驱动程序,根据返回的字节码作出相应的处理。
@ECHO OFF
START
CLS
MENU
IF ERRORLEVEL 52 GOTO C
IF ERRORLEVEL 51 GOTO PRO
IF ERRORLEVEL 50 GOTO BAS
IF ERRORLEVEL 49 GOTO PAS
IF ERRORLEVEL 48 GOTO EX
CLS
GOTO START
:PAS
TURBO.EXE
GOTO START
:BAS
BASIC.EXE
GOTO START
:PRO
PROLOG.EXE
GOTO START
:C
TC.EXE
GOTO START
:EX
@ECHO ON
执行LG,屏幕左上角先出现一个菜单,并提示用户输入选择,当选择的功能执行结束,重新返回主菜单请求选择,直到选择“0”号功能,程序结束返回DOS。
作者: zaa
时间: 2008-3-10 10:20
请问 debug 我在 xp 下执行 debug 后,
照着您上面的输入 但是会发生 error ???
可否简单说明怎么建立 debug 文件,谢谢喔~~
作者: zh159
时间: 2008-3-10 11:03
每做一个菜单就得做一个MENU.COM,还不如用choice来得方便菜单,可以直接在BAT内做菜单
作者: qzwqzw
时间: 2008-3-10 11:28
不知道楼主从那本历史书上择出来的
cmd下实现选择有set/p
dos下实现选择有choice
或许有个有用的地方
就是在cmd下实现单键选择
不过需要改进一下
A
MOV AH,01
INT 21
MOV AH,4C
INT 21
RCX
8
Nch.com
W
Q
.
将以上代码保存为ch.scr
再使用debug < ch.scr 编译得到 ch.com
ch.com将菜单文字的输出交由echo完成
只负责将输入键的ASCII码转换为对应的errorlevel
这样不仅节省了代码
也省得每次输出新菜单都需要重新汇编
比如以下的例子
@echo off
if "%OS%"=="Windows_NT" chcp 437>nul & graftabl 936>nul
echo.
echo A. Menu A
echo B. Menu B
echo C. Menu C
echo.
echo Please choose:
ch.com>nul
if not errorlevel 66 if errorlevel 65 echo Choice is A.
if not errorlevel 67 if errorlevel 66 echo Choice is B.
if not errorlevel 68 if errorlevel 67 echo Choice is C.
if not errorlevel 98 if errorlevel 97 echo Choice is A.
if not errorlevel 99 if errorlevel 98 echo Choice is B.
if not errorlevel 100 if errorlevel 99 echo Choice is C.
当然,即使如此
03的choice.exe仍然比这个要好得多
[
Last edited by qzwqzw on 2008-3-10 at 11:50 AM ]
作者: plp626
时间: 2008-3-10 13:39
哈,来个鼠标点击的菜单选项功能呀
作者: qzwqzw
时间: 2008-3-11 09:41
http://home.mnet-online.de/horst.muc/w32dial.htm#wselect