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

📄 menu.asm

📁 此程序是微机与接口技术的课程设计源程序
💻 ASM
字号:
;FILENAME: MENU.ASM 
;内容:光条式程序菜单设计
DISP 	MACRO  X, LENGTH, COLOR   	;定位显示彩色字符串
       	MOV          AX, 1301H
       	MOV       BX, COLOR         	;属性字-BK
       	MOV       CX, LENGTH        	;串长度→CX
      	MOV      DH,YY               	;行值→DH
       	MOV        DL,X              	;列值→DL
       	MOV      BP, ADDR           	;待显串偏移地址→BP
       	INT          10H 
       	ENDM
;------------------------------------------------------
DATA  	SEGMENT
L0    	DB        '  MENU                      '
L1    	DB       '========================='
L2    	DB       '|    EXAMPLE 1             |'     
L3    	DB       '|    EXAMPLE_2             |'
L4    	DB       '|    EXAMPLE_3             |'
L5     	DB       '|    RETURN                |'
L6     	DB       '========================='
LL   	EQU          $-L6       		;LL为边框长度
XX    	EQU       (80- LL)/2      	;XX为待显串首字符列值
YY    	DB        ?                 	;存放待显串的行值
NN		DW        1                		;记录色带的位置
TAB   	DW        ?,L2,L3,L4,L5     	;存放菜单项偏移地址
ADDR  	DW        ?            			;存放待显串偏移地址
DATA  	ENDS
;----------------------------------------------------------------
CODE 	SEGMENT
       	ASSUME       CS: CODE, DS: DATA, ES: DATA
BEG:  	MOV     AX, DATA
       	MOV     DS, AX
       	MOV     ES, AX
       	MOV     AX, 3
       	INT     10H                   	;清屏
       	MOV     YY,8					;菜单起始行值→YY单元
       	MOV    ADDR, OFFSET L0     	;L0偏移地址→ADDR单元
LAST2:	DISP   XX, LL, 0FH         	;显示一行菜单
       	ADD   ADDR, LL                ;下一串偏移地址→ADDR单元
       	INC    YY                    	;下一菜单项行值→YY单元
       	CMP     YY, 15
       	JL       LAST2
       	MOV             NN, 1
       	CALL     COMPUTE
       	DISP      XX+3,LL-6,51H    	;令色带覆盖第1菜单项
SCAN: 	MOV           AH, 1
       	INT       16H               	;有键入?
       	JZ        SCAN              	;否,转等待输入
       	MOV              AH, 0
       	INT       16H               	;读键盘缓冲区
       	CMP          AH, 80
       	JE        DOWN              	;是向下箭头键,转下移处理
       	CMP       AH, 72
       	JE        UP                 	;是向上箭头键,转上移处理
       	CMP          AL, 0DH
       	JE        EXIT               	;是回车,转退出
       	JMP       SCAN               	;非法键,转等待输入
DOWN: 	CMP           NN, 4
       	JE           SCAN
       	CALL        COMPUTE
       	DISP      XX+3,LL-6,0FH     	;令当前色带消失
       	INC      NN                   	;(NN)+1→NN单元
       	CALL        COMPUTE
       	DISP      XX+3,LL-6,51H     	;色带下移1项
       	JMP          SCAN
UP:   	CMP          NN,1
       	JE           SCAN
       	CALL        COMPUTE
       	DISP      XX+3,LL-6,0FH   	;令当前色带消失
       	DEC       NN                  	;(NN)-1→NN单元
       	CALL     COMPUTE
       	DISP      XX+3,LL-6,51H     	;色带上移1项
       	JMP      SCAN
EXIT: 	MOV       AL, BYTE PTR NN  	;携带返回码
       	MOV      AH, 4CH
       	INT       21H                  ;返回批处理
;------------------------------------------------------
COMPUTE  PROC                       	;计算子程序
       	MOV          DI, NN
       	ADD          DI,DI
       	MOV      AX,TAB[DI]
       	ADD          AX,3
       	MOV       ADDR,AX          	;待显串偏移地址→ADDR单元
       	MOV          AL, BYTE PTR NN
       	ADD          AL,9
       	MOV    YY,AL
       	RET
COMPUTE    ENDP
CODE  	ENDS
       	END    BEG

⌨️ 快捷键说明

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