⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 muedit.asm

📁 汇编课程设计报告 文档编辑器及乐曲演奏程序
💻 ASM
📖 第 1 页 / 共 5 页
字号:
 exitfile20:  MOV  	AX,4C00h
              INT       21h   
 exitfile:                                           
              CALL      menuHide 
              CALL      BackDisplay
              recover 
              poscur row,column                                                     
	 	       RET                                                                                      
 showmenuF     ENDP 
 ;************************************   
 ;显示文件菜单
;先保存视频缓冲区的内容 ,再获取键盘输入,按照输入跳到不同的分支,
;每个分支都调用相应的函数来处理.    
;to*为当前选中项*的处理分支                
;to*&,其中&是数字,为了解决汇编中的一些跳转指令分几次跳的问题,               
showMenuP     PROC
              saveE
              CALL 	savedisplay
    		  win       0,16,0,25,07h
    		  poscur    0,0          
		    show      str_menu                
		    win       2,16,7,27,79h  ;菜单不选中的颜色(白底黑字)
		    win       8,17,8,28,07h  ;菜单的阴影
		    win       2,28,8,28,07h  ;菜单的阴影
		    poscur    2,16                
		    show  play_0                
		    poscur    3,16                
		    show  play_1
		    poscur    4,16          
		    show  play_2
		    poscur    5,16          
		    show  play_3
		    poscur    6,16          
		    show  play_4 
		    poscur    7,16          
		    show  play_5               
		 tomusic1:   
		    win       4,17,4,26,79h          
		    poscur    4,16             	
                show      play_2 
		    win       6,17,6,26,79h      
		    poscur    6,16             	
		    show      play_4                                         
		    win       3,17,3,26,67h            
		    poscur    3,16
		    show  play_1                                                                               
		    GEtchar 
		    CMP       AH,50h               ;若按下键下方向键
		    JZ        tomusic2  
		    CMP       AH,48h
		    JZ        togun1              
		    CMP       AH,1ch 			;若按了Enter键                        
		    JZ 	  pmusic11                                                        
		    JMP       pexit  
		togun1:       JMP togun    
		tomusic11:     JMP tomusic1
		pmusic11:     JMP	       pmusic1                                                                                                                                                                                     
		tomusic2:           
		    win       3,17,3,26,79h
		    poscur    3,16                 
		    show      play_1
		    win       5,17,5,26,79h         
		    poscur    5,16             	
		    show      play_3                
		    win       4,17,4,26,67h        
		    poscur    4,16             	
		    show      play_2   
		    GEtchar
		    CMP  AH,50h
		    JZ   toscale   
		    CMP       AH,48h
		    JZ        tomusic11                              
		    CMP AH,1ch   
		    JZ    pmusic21
		    JMP       pexit   
		tomusic21:    JMP       tomusic2  
		pmusic21:     JMP		pmusic2                          
		toscale:           
		    win       4,17,4,26,79h
		    poscur    4,16                 
		    show      play_2
		    win       6,17,6,26,79h         
		    poscur    6,16             	
		    show      play_4               
		    win       5,17,5,26,67h        
		    poscur    5,16             	
		    show      play_3   
		    GEtchar
		    CMP  AH,50h
		    JZ   togun 
		    CMP       AH,48h
		    JZ        tomusic21                     
		    CMP AH,1ch   
		    JZ    pscale1
		    JMP       pexit 
		  
		pscale1:      JMP       pscale              
		tomusic12:    JMP       tomusic1  
		toscale1:     JMP       toscale                                          
		togun:           
		    win       5,17,5,26,79h
		    poscur    5,16                 
		    show      play_3
		    win       3,17,3,26,79h            
		    poscur    3,16
		    show      play_1              
		    win       6,17,6,26,67h         
		    poscur    6,16             	
		    show      play_4   
		    GEtchar
		    CMP  AH,50h
		    JZ   tomusic12   
		    CMP       AH,48h
		    JZ        toscale1                             
		    CMP AH,1ch   
		    JZ    pgun
		    JMP       pexit   
              
;****处理不同的分支所调用的不同的函数.****/              
                                       
pmusic1:      
              CALL      music1play
              JMP       pexit
pmusic2:      
              CALL	music2play
              JMP       pexit
pscale:       
              CALL	scaleplay
              JMP       pexit
pgun:         
              CALL	gunplay
              JMP       pexit
pexit:        CALL      menuHide 
              CALL      BackDisplay             
              poscur row,column
              recover
              RET                                                           
showMenuP	ENDP 
showMenuE     PROC              
              saveE
              CALL 	savedisplay	
              CMP       copyFlag,0
              JZ        NOTactiveC
              MOV       copyActive,79h
              JMP       activeOKC
	  notactiveC:   
	              MOV       CopyActive,78h  
	  activeOKC:
              CMP       PasteFlag,0
              JZ        NOTactiveP
              MOV       PasteActive,79h
              JMP       activeOKP
	  notactiveP:   
	              MOV       PasteActive,78h  
	  activeOKP:                                          
    		    win       0,31,0,40,07h
    		    poscur    0,0          
		    show      str_menu                
		    win       2,31,6,42,78h  ;菜单不选中的颜色(白底黑字)
		    win       7,32,7,43,07h  ;菜单的阴影
		    win       2,43,7,43,07h  ;菜单的阴影
		    poscur    2,31                
		    show  Edit_0                
		    poscur    3,31                
		    show  Edit_1
		    poscur    4,31          
		    show  Edit_2
		    poscur    5,31          
		    show  Edit_3
		    poscur    6,31          
		    show  Edit_4             
		 toCopy:   
		    win       4,32,4,41,copyActive          
		    poscur    4,31             	
                show      Edit_2 
		    win       5,32,5,41,pasteActive      
		    poscur    5,31             	
		    show      Edit_3                                         
		    win       3,32,3,41,67h            
		    poscur    3,31
		    show      Edit_1
                showM	  mess21                                                                               
		    GEtchar 
		    CMP       AH,50h               ;若按下键下方向键
		    JZ        toCut  
		    CMP       AH,48h
		    JZ        toPaste1              
		    CMP       AH,1ch 			;若按了Enter键                        
		    JZ 	  pCopy1                                                        
		    JMP       Editexit   
            toPaste1:     JMP       toPaste     
	      
		pCopy1:      JMP	       pCopy                                                                                                                                                                                     
		toCut:           
		    win       3,32,3,41,copyActive
		    poscur    3,31                 
		    show      Edit_1
		    win       5,32,5,41,pasteActive         
		    poscur    5,31             	
		    show      Edit_3                
		    win       4,32,4,41,67h        
		    poscur    4,31             	
		    show      Edit_2 
                showM	  mess22  
		    GEtchar
		    CMP		AH,50h
		    JZ   		toPaste   
		    CMP      	 AH,48h
		    JZ        	toCopy1                              
		    CMP 		AH,1ch   
		    JZ    		PCut1
		    JMP       	EditExit 
            toCopy1:     JMP       toCopy    		  
		PCut1:     JMP		PCut                          
		toPaste:           
		    win       4,32,4,41,copyActive
		    poscur    4,31                 
		    show      Edit_2
		    win       3,32,3,41,copyActive         
		    poscur    3,31             	
		    show      Edit_1               
		    win       5,32,5,41,67h        
		    poscur    5,31             	
		    show      Edit_3  
                showM	  mess23 
		    GEtchar
		    CMP  AH,50h
		    JZ   toCopy2 
		    CMP       AH,48h
		    JZ        toCut1                     
		    CMP AH,1ch   
		    JZ    pPaste1
		    JMP       EditExit 
		toCut1:    JMP       toCut  
		pPaste1:   JMP       pPaste              
		toCopy2:   JMP       toCopy  
		                                         
              
;****处理不同的分支所调用的不同的函数.****/              
                                       
pCopy:      
              CALL      CopyEdit
              JMP       EditExit
PCut:      
              CALL	CutEdit
              JMP       EditExit
pPaste:       
              CALL	PasteEdit
              JMP       EditExit
EditExit:        
              CALL      menuHide 
              CALL      BackDisplay             
              poscur 	row,column              
              recover
              RET
showMenuE     ENDP                            
 ;*************************************
CopyEdit      PROC
              saveE
              CMP       copyFlag,0
              JZ        exitCopyEdit
     ;         CALL      CLsPaste
              MOV       pasteFlag,1
              MOV       CL,pasteNum
              MOV       CH,0 
              poscur	rowbak,columnbak  
              MOV       DH,rowbak
              MOV       DL,columnbak              
              MOV       SI,0           
copyLoop:     
              readchar
              MOV       pasteBuffer[SI],AL
              INC       SI
              INC       DL
              poscur	DH,DL
              LOOP      copyLoop
              MOV       pasteBuffer[SI],24h                                          
exitCopyEdit:               
              recover
              RET
CopyEdit      ENDP
cutEdit      PROC
              saveE
              CMP       copyFlag,0
              JZ        exitCutedit
              MOV       pasteFlag,1
              MOV       CL,pasteNum
              MOV       CH,0 
              poscur	rowbak,columnbak  
              MOV       DH,rowbak
              MOV       DL,columnbak              
              MOV       SI,0           
cutLoop:     
              readchar
              MOV       pasteBuffer[SI],AL              
              INC       SI
              INC       DL
              poscur	DH,DL
              LOOP      cutLOOP
              MOV       pasteBuffer[SI],24h                  
exitCutEdit:
              posgets
              poscur	rowbak,columnbak  
              MOV       DH,rowbak
              MOV       DL,columnbak  
              CALL      BackDisplay                          
 LOOPclearCut:								;此循环是为了恢复反显文本 
              MOV       AL,20h                                  
              MOV       BX,0017h
              MOV       CX,1 
              MOV       AH,09h             
              INT       10h              
              DEC       SI 
              INC       DL
              poscur	DH,DL
              CMP       SI,0
              JNZ       LOOPclearCut
              CALL      savedisplay            
              poscur    row,column                                           
              recover
              RET
cutEdit      ENDP
pasteEdit      PROC
              saveE
              CALL      backdisplay
              poscur	row,column
              CMP       pasteFlag,0
              JZ        exitPasteEdit 
              posgets 
              MOV       CL,pasteNum
              MOV       CH,0
              MOV       SI,0
  LOOPPaste:  
              CMP       column,79
              JNZ       continuePaste
              MOV       column,1
              INC       row
              poscur	row,column
    continuePaste:
              INC       column
              MOV		DL,pastebuffer[SI]
        	  INC 	SI
       	  MOV 	AH,2
       	  INT 	21h
     	        LOOP 	LOOPPaste                          
              CALL	saveDisplay 
              mov	modifyFlag,0            
 exitPasteEdit:                         
              recover
              RET
pasteEdit      ENDP                                                        
;显示帮助
 showmenuh     PROC
              saveE 
              posgets
              CALL      SaveDisplay
              win       10,15,16,67,07h
              win       9,14,15,66,0E4h               
              poscur    10,5
              show      mess16 
              poscur    11,5	
              show      mess17
              poscur    12,5
              show      mess18 
              poscur    13,5	
              show      mess19    
              win	      14,15,14,66,0EDh
              poscur    14,5
              show	mess20                     
		  GEtchar
              CALL	BackDisplay  
              poscur	row,column           

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -