1.FILE MANAGE
2.FILE ENCRYPT
3.EXIT
PLEASE ENTER THE NUMBER:1
---------------->其中这个第一个还有下一级子菜单
1.CREATE FILE
2.EXIT SUBMENU
PLEASE ENTER THE NUMBER:
比如我选1 然后它就跳到了子菜单,这时候,怎么不让第一级菜单显示,只显示第二子菜单,然后按号码后执行子菜单的选项?
还有怎么退出子菜单?代码求助??写一个做例子就好。。?
------解决方案--------------------------------------------------------
- Assembly code
;************数据段定义开始*******************DATA SEGMENTMENU DB 0DH,0AH,'1.FILE MANAGE',0DH,0AH,'2.FILE ENCRYPT',0DH,0AH,'3.FILE DECIPHERING',0DH,0AH,'4.FILE TRANSMIT',0DH,0AH,'5.EXIT',0DH,0AH,'PLEASE ENTER THE NUMBER:$' FILEMENU DB 0DH,0AH,'1.Create FILE',0DH,0AH,'2.READ FILE',0DH,0AH,'3.WRITE FILE',0DH,0AH,'4.Delete FILE',0DH,0AH,'5.EXIT FILEMENU',0DH,0AH,'WHAT DO YOU WANT TO DO? :$' DATA ENDS ;************数据段结束******************* ;************主程序开始*******************CODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MAIN: MOV AH,9MOV DX,OFFSET MENU ; 菜单显示出来INT 21HMOV AH,1 ; 1号功能键盘输入并回显INT 21HN1: CMP AL,31H ;进入文件管理JNZ N2MOV DX,0XOR DX,DXMOV DX,OFFSET FILEMENUINT 21HMOV AH,9INT 21H;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mov ah,1int 21hcmp al,31h;进入相应功能要处理的地方cmp al,32h;进入相应功能要处理的地方cmp al,33h;进入相应功能要处理的地方cmp al,34h;进入相应功能要处理的地方cmp al,35hjmp main ;可以直接跳转,也可以防止其它输入(0,6,7...)而设置代码。;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;N2: CMP AL,32H ;进入文件加密JNZ N3CALL JIAMIFILE_JMP MAINN3: CMP AL,33H ;进入文件解密JNZ N4CALL JIEMIFILE_ JMP MAINN4: CMP AL,34H ;进入文件传输JNZ EXITCALL TRANSMIT_JMP MAINEXIT: CMP AL,35H ;退出JNZ MAINMOV AH,4CHINT 21H ;************主程序结束*******************;************以下为子程序部分******************* JIAMIFILE_ PROC NEARRETJIAMIFILE_ ENDPJIEMIFILE_ PROC NEARRETJIEMIFILE_ ENDP TRANSMIT_ PROC NEARRETTRANSMIT_ ENDP ;************子程序结束******************* CODE ENDSEND START
------解决方案--------------------------------------------------------
时刻保存当前选中的菜单以及菜单嵌套的等级,这样你可以在任何一级菜单
中返回或递进深一层。
------解决方案--------------------------------------------------------
- Assembly code
;************数据段定义开始*******************DATA SEGMENTMENU DB 0DH,0AH,'1.FILE MANAGE',0DH,0AH,'2.FILE ENCRYPT',0DH,0AH,'3.FILE DECIPHERING',0DH,0AH,'4.FILE TRANSMIT',0DH,0AH,'5.EXIT',0DH,0AH,'PLEASE ENTER THE NUMBER:$' FILEMENU DB 0DH,0AH,'1.Create FILE',0DH,0AH,'2.READ FILE',0DH,0AH,'3.WRITE FILE',0DH,0AH,'4.Delete FILE',0DH,0AH,'5.EXIT FILEMENU',0DH,0AH,'WHAT DO YOU WANT TO DO? :$' DATA ENDS ;************数据段结束******************* ;************主程序开始*******************CODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MAIN: MOV AH,9 MOV DX,OFFSET MENU ; 菜单显示出来 INT 21H MOV AH,1 ; 1号功能键盘输入并回显 INT 21H N1: CMP AL,31H ;进入文件管理 JNZ N2 ;MOV DX,0 ;XOR DX,DX ;MOV DX,OFFSET FILEMENU ;INT 21H ;MOV AH,9 ;INT 21H ;-------------------------- CALL SUBMENU_ JMP MAIN ;-------------------------- N2: CMP AL,32H ;进入文件加密 JNZ N3 CALL JIAMIFILE_ JMP MAIN N3: CMP AL,33H ;进入文件解密 JNZ N4 CALL JIEMIFILE_ JMP MAIN N4: CMP AL,34H ;进入文件传输 JNZ EXIT CALL TRANSMIT_ JMP MAIN EXIT: CMP AL,35H ;退出 JNZ MAIN MOV AH,4CH INT 21H;************主程序结束*******************;************以下为子程序部分*******************;----------------------SUBMENU_ PROC NEAR SHOWMENU: XOR DX,DX MOV DX,OFFSET FILEMENU INT 21H MOV AH,9 INT 21H MOV AH,1 INT 21H NN1: CMP AL,31H ;CREATEFILE JNZ NN2 CALL CREATEFILE__ JMP SHOWMENU NN2: CMP AL,32H ;READFILE JNZ NN3 CALL READFILE__ JMP SHOWMENU NN3: CMP AL,33H ;WRITEFILE JNZ NN4 CALL WRITEFILE__ JMP MAIN NN4: CMP AL,34H ;DELETEFILE JNZ EXIT_ CALL DELETEFILE__ JMP SHOWMENU EXIT_: CMP AL,35H ;退出 JNZ SHOWMENU RETSUBMENU_ ENDP;----------------------JIAMIFILE_ PROC NEARRETJIAMIFILE_ ENDPJIEMIFILE_ PROC NEARRETJIEMIFILE_ ENDPTRANSMIT_ PROC NEARRETTRANSMIT_ ENDP ;************子程序结束******************* ;-------------以下为子程序的子程序-------------CREATEFILE__ PROC NEARRETCREATEFILE__ ENDPREADFILE__ PROC NEARRETREADFILE__ ENDPWRITEFILE__ PROC NEARRETWRITEFILE__ ENDPDELETEFILE__ PROC NEARRETDELETEFILE__ ENDP ;---------------------------------------------- CODE ENDSEND START