汇编语言菜单系统

上传人:工**** 文档编号:503232286 上传时间:2023-05-03 格式:DOC 页数:22 大小:500KB
返回 下载 相关 举报
汇编语言菜单系统_第1页
第1页 / 共22页
汇编语言菜单系统_第2页
第2页 / 共22页
汇编语言菜单系统_第3页
第3页 / 共22页
汇编语言菜单系统_第4页
第4页 / 共22页
汇编语言菜单系统_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《汇编语言菜单系统》由会员分享,可在线阅读,更多相关《汇编语言菜单系统(22页珍藏版)》请在金锄头文库上搜索。

1、-实训一 光标漫游问题在25行80列的显示屏内,通过按键、来改变光标的位置,如按键则光标往右侧走一列,按键则光标往上走一行的位置,最终通过Esc完毕程序。边界问题要处理好特殊情况:光标在第一行,再按键时;光标在第一列,再按键时;光标在第25行,再按键时;光标在第80列,再按键时。边界问题处理采用折返的方式:光标在第1行,再按键时进到第25行;光标在第1列,再按键时进到第80行;光标在第25行,再按键时进到第1行;光标在第80列,再按键时时进到第1列。实验根底 读键:用int 16h的0号功能调用掌握扫描码和字符码的区别Mov ah,0Int 16h;返回AH=扫描码,AL=字符码 定位光标:用

2、int 10h的2号 清屏:用int 10h的6号或7号功能调用 MOV AH,6 MOV BH,04h MOV AL,0 MOV C*,0 MOV D*,184fh INT 10h相关键的扫描码和字符码EnterKey EQU 1c0dhEscKey EQU 010bhUpCursor EQU 4800hLeftCursor EQU 4b00hRightCursor EQU 4d00hDownCursor EQU 5000h5.算法do定位光标读键 if (al=特殊键) if (ah=左光标键) 修正列值else if (ah=右光标键) 修正列值else if (ah=上光标键) 修正行

3、值else if (ah=下光标键) 修正行值 while (al!=Esc)6.实验步骤运行光标漫游例如.E*E了解需求。编一小程序获得特殊键、Esc、回车等的扫描码和Asc码值,并记录以备后用;写出光标漫游的算法保存,用类自然语言描述,用word,与同学、教师讨论算法的可行性与正确性;在初步正确的根底上,编写汇编语言源程序;如发现算法问题,用调试器调试;7.要点光标如何根据所按的键跟随?折返如何处理?*=(*+1) %25;8.该实验与大实验的关联性请大家体会主菜单实验蓝本.e*e的处理过程。附件:实验报告内容问题设计要点及算法源程序运行结果使用调试器状况和经历总结使用体会和总结实训一 光

4、标漫游改良根据跳跃表法另称跳转表,教材p180来改良光标漫游程序。键:、Esc、Enter、ALT_*退出循环。其中对Esc、Enter键暂不做任何处理。1. 掌握跳转表的原理MenuJmpTbl dw Enterkey,IsEnterKey dw EscKey,IsESCKey dw UpCursor,IsUpCursor dw LeftCursor,IsLeftCursordw RightCursor,IsRightCursor dw DownCursor,IsDownCursor上述跳转表共项,每项为:键值扫描码字符码、处理的入口地址2. 掌握跳转表的总控程序(入口地址为标号)Conti

5、nueReadKey: MOV B*,offset MenuJmpTbl MOV C*,6 YesNoKeyEqual: cmp a*,b* je IsKeyEqual add b*,4 loop YesNoKeyEqual jmp ContinueReadKeyIsKeyEqual: mov b*,b*+2jmp b*IsEnterKey:.IsESCKey:.3. 掌握跳转表的总控程序(入口地址为子程序)ContinueReadKey: MOV B*,offset MenuJmpTbl MOV C*,6 YesNoKeyEqual: cmp a*,b* je IsKeyEqual add

6、b*,4 loop YesNoKeyEqual jmp ContinueReadKeyIsKeyEqual: mov b*,b*+2callb* jmp ContinueReadKeyIsEnterKey proc;不能用无条件转移指令等跳出子程序 retIsEnterKey endp.IsESCKey proc.实训二 色彩处理及方框显示问题在显示屏显示各种形状的方框大小不一。等实验中可用1,2,3,4,9,0等来代替,如:122222223455555556455555556455555556788888889实验根底 注意颜色查看conio.c中的函数:颜色名称值颜色名称值BLACKDA

7、RKGRAYBLUELIGHTBLUEGREENLIGHTGREENCYANLIGHTCYANREDLIGHTREDMAGENTALIGHTMAGENTABROWNYELLOWLIGHTGRAYWHITE实验步骤编写小程序,用int 10h的0eh功能来显示字符串;写出显示方框的算法注意模块化;在初步正确的根底上,编写汇编语言源程序;如发现算法问题,用调试器调试; 完本钱实验的实验报告。4. 算法ShowBo*(左上角坐标,右下角坐标,方框串,颜色)/显示第一行/for显示中间行 /显示最后一行ShowALineOfBo*(左上角坐标,宽度,方框子串,颜色)/定位光标/设置颜色并显示第一字符

8、/for显示中间字符 /显示最后一字符5. 实验关键先实现ShowALineOfBo*子程序,编程时考虑模块化的概念,处理参数的传递方法先采用变量或存放器的方式来传送。参考以下案例:bo*str db 123. mov ah,0eh mov bl,0fh mov bh,0 mov al,bo*str int 10h mov c*,10 mov al,bo*str+1showrepchar: int 10h loop showrepchar mov al,bo*str+2 int 10h 注意上述代码和算法的关系。6. 直接写屏来显示的原理和方法对显示缓冲区的简单介绍对字符属性字节的简单介绍一个

9、简单的例子直接写屏的案例 mov di,0b800h mov es,di *or di,di;di=0,表示是行列的位置,如要显示在(5,8)的位置,di该何值? mov si,offset bo*str mov ah,0fh lodsb stosw mov c*,10 lodsb rep stosw lodsb stosw 7.直接写屏的方框显示算法ShowBo*(左上角坐标,右下角坐标,方框串,颜色) /根据左上角坐标计算显示缓冲区地址,用子程序定义/显示第一行/for显示中间行 /显示最后一行可用160的方法来处理下一行的起始位置,编程时用进栈和退栈指令来保存和复原ShowALineOf

10、Bo*(左上角坐标的起始地址,宽度,方框子串,颜色) /设置颜色并显示第一字符 /for显示中间字符/显示最后一字符8.参数表的标准传递方式ShowBo*(左上角坐标,右下角坐标,方框串,颜色)C语言参数传递模型:把参数自右向左压入栈;在函数执行时用相应的参数数据。子程序的参数入栈:例如Mov a*,颜色Push a*Mov a*,方框串地址Push a*Mov a*,右下角坐标Push a*Mov a*,左下角坐标Push a*showBo* proc;子程序里代码Mov bp,sp;bp+2左下角坐标;bp+4右下角坐标; bp+6串地址;bp+8颜色ret 8showBo* Endp实训

11、三主菜单的显示与选择问题在屏幕上显示以下菜单,并能通过、来切换菜单项。如初始显示为:DebugOptionsProjectpileRunEditFile当按键时,变成:OptionsProjectpileRunEditFileDebug再按键时,变成:OptionsProjectpileRunEditFileDebug系统的先期实现按以下约定实施:Enter确认菜单项或弹出子菜单;ESC返回子菜单;、主菜单项间切换;、子菜单项间切换;完成上述功能后,再对相应的按键进展功能的扩展。实验根底本实验是实验一加颜色处理的方法来实现,所以本次实验的根底大家都具备。运行主菜单演示.e*e体会编程。实验原理如何来实现菜单项的切换是本实验的技巧。DebugOptionsProjectpileRunEditFilemi,MenuInde*的缩写假定我们用一变量mi来指向当前选中的菜单,当按键时,我们用未选中的颜色来定位重写File的串,使菜单变成:mi,MenuInde*的缩写DebugOptionsProjectpileRunEditFile然后是按键处理后,mi修正为,然后用选中的颜色定位重写Edit,DebugOptionsProjectpile

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号