当前位置: 代码迷 >> 汇编语言 >> 汇编菜单
  详细解决方案

汇编菜单

热度:7177   发布时间:2013-02-26 00:00:00.0
汇编菜单求助?
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
  相关解决方案