汇编 菜单程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DATAS SEGMENT
scrmm DB 100 DUP(?)
;主菜单名
menu1 DB'FILE'
menu2 DB'Edit'
menu3 DB'RUN'
menu4 DB'TOOL'
menu5 DB'QUIT'
;主菜单File下子菜单名
submenu11 DB'New'
submenu12 DB'Open'
submenu13 DB'Save'
;主菜单Edit下子菜单名
submenu21 DB'Cut'
submenu22 DB'Past'
submenu23 DB'Copy'
;主菜单Run下子菜单名
submenu31 DB'Run'
submenu32 DB'Go to'
submenu33 DB'Step'
;主菜单Debug下子菜单名
submenu41 DB'Call'
submenu42 DB'Find'
submenu43 DB'Source'
;主菜单Help下子菜单名
submenu51 DB'About'
submenu52 DB'Web'
submenu53 DB'Exit'
;窗口信息
msg1 DB'Please press Alt+F,Alt+E,Alt+R,Alt+T,Alt+Q or ',19h,' to open the submenu.'
msg2 DB'Please press Enter (',11h,0c4h,0d9h,') to open/close the submenu.' msg3 DB'Please press ',1bh,' or ',1ah,' to select the menu.'
msg4 DB'Please press ',18h,' or ',19h,' to select the submenu.'
;msg7 DB ' '
;退出信息'
over DB'Thank you for uesing,author by Jianhua'
;其他信息
escape DB'Press ESC to exit.'
text1 DB'This is a menu program made with assemble.' sub11 DB'Select New'
sub12 DB'Select Open'
sub13 DB'Select Save'
sub21 DB'Select Cut'
sub22 DB'Select Past'
sub23 DB'Select Copy'
sub31 DB'Select Run'
sub32 DB'Select Go to'
sub33 DB'Select Step'
sub41 DB'Select Call'
sub42 DB'Select Find'
sub43 DB'Select Source'
sub51 DB'Select About'
sub52 DB'Select Web'
sub53 DB'Select Exit'
;-------------------------
num DB 1 ;主菜单序列号
subnum DB?;子菜单序列号
subshow DB 0 ;为0时子菜单未显示
index DB?;主菜单长度
;--------------------------------
DATAS ENDS
;设置光标位置,显示在0页的(top,left)位置
pos MACRO top,left
MOV AH,02h
MOV BH,0 ;页号
MOV DH,top
MOV DL,left ;位置
INT 10h
ENDM
;修改菜单属性
changemenu MACRO top,left,WIDTH,attr
LOCAL chg
MOV DL,left
chg:
pos top,DL ;置光标位置
MOV BH,0 ;页号
MOV AH,08h ;读光标位置的属性,AH=属性,AL=字符INT 10h
MOV BL,attr ;设置属性
MOV CX,1 ;字符重复次数
MOV AH,09h ;在光标位置显示字符及设置其属性
INT 10h
INC DL
MOV DH,left
ADD DH,WIDTH
CMP DL,DH ;设置的循环次数控制
JNE chg
pos top,left
ENDM
;绘制窗口
drawwindow MACRO attr,top,left,bottom,right
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV AH,06h ;屏幕初始化
MOV AL,0 ;全屏为空白
MOV BH,attr ;卷入行属性
MOV CH,top
MOV CL,left ;左上角坐标
MOV DH,bottom
MOV DL,right;右下角坐标
INT 10h
POP DX
POP CX
POP BX
POP AX
ENDM
;绘制窗口上下边框
windowtandb MACRO l,m,r,top,left,WIDTH,attr
pos top,left ;置光标位置
outputchar l,attr,1 ;输出字符,画左上折角