汇编语言菜单程序设计.docx
《汇编语言菜单程序设计.docx》由会员分享,可在线阅读,更多相关《汇编语言菜单程序设计.docx(12页珍藏版)》请在冰豆网上搜索。
![汇编语言菜单程序设计.docx](https://file1.bdocx.com/fileroot1/2023-2/4/5e40762c-a370-4848-87c1-3a2345dfd683/5e40762c-a370-4848-87c1-3a2345dfd6831.gif)
汇编语言菜单程序设计
皖西学院
课程设计报告书
系别:
机电系
专业:
电子信息科学与技术
学生姓名:
夏丽
学号:
20071233
课程设计题目:
汇编语言菜单设计
起迄日期:
5月22日~6月5日
课程设计地点:
计算机机房/机电系EDA实验分室
指导教师:
张斌
完成日期:
2010年6月4日
一设计目的与设计要求.........................1
二设计原理..................................2
1windows下模拟DOS环境.....................3
三汇编语言程序上机过程.............................4
1工作环境.......................................5
2运行汇编语言程序步骤...........................6
四程序流程图.................................7
五心得体会...................................8
六参考资料........................................9
摘要
上世纪八十年代------随着微软公司的windows操作系统的出现,计算机应用由命令行工作方式逐渐转为图形操作方式,方便了普通用户和计算机交互使用,是计算机软件历史发展上的一个里程碑,计算机软件发展也正式进入了图形操作环境。
本文以常见的X86处理器为平台,使用汇编语言实现菜单显示,近似模拟图形操作的方式。
一.设计目的与设计要求
一本次课程设计应达到的目的
通过本设计使巩固学生对所学知识的掌握,培养学生运用课程中所学到的理论知识与实践紧密结合,独立地解决实际问题的能力,培养学生运用汇编软件的编程能力和编程技巧,锻炼其运用软件的综合能力。
二本课程设计课题任务的内容和要求(包括原始数据、技术参数、设计要求等):
1、编写程序,在文本方式下显示—个英文菜单。
要求分别显示“FILE”,“EDIT”“PROCESSING”’“QUIT”四个菜单,并对每项菜单的输入都有所响应。
2、按某一功能键自动返回DOS;
3、写具体的汇编源程序,画出流程图;
二.设计原理
本设计使用windows模拟DOS环境下,使用MASM汇编、编译、调试、连接等工具,使用PC机的键盘和显示器分别做程序的输入输出,实现程序的人机交互。
一windows下模拟DOS环境
DOS的全名是DiskOperationSystem,是PC系统上历史最悠久的操作系统。
基于X86体系结构的最原始的操作系统,支持对底层硬件的直接控制和访问。
DOS是一种16位操作系统,通过IO.SYS、MSDOS.SYS和COMMAND.COM三个主要的系统文件就能独立工作,成为“纯DOS”,但是这种DOS模式仅用于涉及硬件的底层操作,如分区、刷BIOS等。
在纯DOS下再加入CONFIG.SYS,AUTOUEXEC.BAT和各种驱动程序、DOS下的16位应用程序就成为“实模式DOS”,是最常用的DOS系统模式。
进入WINDOWS时代后,WINDOWS3.X和WINDOWS9X系列操作系统(包括WINDOWSME)本质上都是以DOS为内核的32位保护模式应用程序,顶多是加层壳而已。
于是,使用WINDOWS95/98的用户在“开始”菜单中可以找到一个“msdos方式”(command),那就是“保护模式DOS”,严格来说也是16位的DOS,但是该DOS运行于Windows下。
此外,Windows98系统的“关闭系统”选项中有“重新启动并切换到DOS模式下”的选项,就是重启后进入实模式DOS。
但是,这种情况在NT内核出现后被彻底改变,NT内核是独立的32位操作系统(WINDOWSNT/2000/XP/2003)的核心,不依赖于DOS的16为核心,因此这些操作系统中不包括DOS而独立运作。
为了照顾大部分习惯于使用命令行(即DOS和CMD都使用的文字界面,这也是大部分人把DOS和CMD“命令提示符”混为一谈的原因)的系统开发和维护人员(因为命令行界面有效率高、指令传输快的优点,因此高级的计算机专家们都不用图形界面),微软在NT系列操作系统中集成了“复原监督台”和“命令提示符”(即“CMD”)两个组件,通过命令行操作WINDOWS。
但是事实上这两个组件仅仅是和DOS一样通过命令行操作而已,它们都是32位应用程序(而DOS是16位操作系统)。
cmd就是command,是xp、2000等操作系统下的一个程序,可以通过开始-运行—打开此程序。
事实上它是虚拟的dos操作环境。
CMD是操作系统里面的一种人机交互界面,外观和操作相同。
更重要的是,CMD中提供和DOS极为相似的操作,并保留了DOS中大量的原始命令,因此我们的汇编程序在CMD下调试编译。
三.汇编语言程序上机过程
一.工作环境:
1.硬件环境:
目前8086汇编语言程序一般多在IBMPC/XT及其兼容机上运行,及其兼容机上运行,要求机器具备基本配置即可。
2。
软件环境:
主要是指支持汇编语言程序。
软件环境:
主要是指支持汇编语言程序运行和帮助建立汇编运行和帮助建立汇编语言源程序的语言源程序的一些软件,主要包括:
1)DOS操作系统;2)编辑程序EDIT.COM;3)宏汇编程序MASM.EXE;4)连接程序LINK.EXE;5)调试程序DEBUG.COM
二.运行汇编语言程序的步骤:
(1)用编辑程序EDIT.COM建立扩展名为.ASM的汇编语言源程序文件;
(2)用汇编程序MASM.EXE将汇编语言源程序文件汇编成用机器码表示的目标程序文件,其扩展名为.OBJ;
(3)在汇编过程中出现语法错误,根据错误信息提示(如位置,类型,说明),用编辑软件重新调入源程序进行修改。
无错误时采用连接程序LINK.EXE把目标文件转化成可执行文件,其扩展名为.EXE;
(4)生成可执行文件后,在DOS命令状态下直接键入文件名就可执行该文件
四.程序流程图
五.心得体会
我觉得做课程设计同时也是对课本知识的巩固和加强,由于课本上的知识太多,平时课间的学习并不能很好的理解和运用各个汇编指令的功能,而且考试内容有限,所以在这次课程设计过程中,我们了解了很多指令的功能,并且对于其在程序中的使用有了更多的认识。
平时看课本时,有时问题老是弄不懂,做完课程设计,那些问题就迎刃而解了。
而且还可以记住很多东西。
比如一些汇编语句错误的原因,平时看课本,这次看了,下次就忘了,通过动手实践让我们对各个指令映象深刻。
认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准。
所以这课程设计对我们的作用是非常大的。
期间,很多不懂得地方,张老师都给我们细心的讲解和启发,直到我们明白,最终我们完成了这次课程设计。
最后,对给予我帮助的同学和张老师表示忠心的感谢。
六 参考资料
[1].戴梅萼,史嘉权微型计算机技术及应用。
北京:
清华大学出版社,2003
[2].仇玉章32位微型计算机原理与接口技术。
北京:
清华大学出版社,2001
[3].郑学坚周斌微型计算机原理及应用。
北京:
清华大学出版社,1998
[4].李伯成侯伯亨微型计算机原理及应用西安:
电子科大出版社,1998
[5].邓元庆贾鹏数字电路与系统设计西安:
电子科大出版社,2003
[6].周荷琴吴秀清微型计算机原理与接口技术。
合肥:
中国科学技术大学出版社,2009
源程序:
DATASEGMENT
MESS1DB0DH,0AH,'_____',0DH,0AH
DB'|FIlE|',0DH,0AH
DB'|EDIT|',0DH,0AH
DB'|PROCESSING|',0DH,0AH
DB'|QUIT|',0DH,0AH
DB'_____',0DH,0AH,'$'
MESSDB'PLEASEPRESSF,E,PORQ',0DH,0AH,'$'
MESDB'(ENTERANYKEYTORETURN)',0DH,0AH,'$'
MESS2DB0DH,0AH,'___FILE___',0DH,0AH
DB'||',0DH,0AH
DB'||',0DH,0AH
DB'||',0DH,0AH
DB'||',0DH,0AH
DB'_____',0DH,0AH,'$'
MESS3DB0DH,0AH,'___EDIT___',0DH,0AH
DB'||',0DH,0AH
DB'||',0DH,0AH
DB'||',0DH,0AH
DB'||',0DH,0AH
DB'_____',0DH,0AH,'$'
MESS4DB0DH,0AH,'___PROCESSING___',0DH,0AH
DB'||',0DH,0AH
DB'||',0DH,0AH
DB'||',0DH,0AH
DB'||',0DH,0AH
DB'_____',0DH,0AH,'$'
MODEDB?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAH,0FH
INT10H
MOVBYTEPTR[MODE],AL
MOVAH,00
MOVAL,02
INT10H
MOVAH,09
MOVDX,OFFSETMESS1
INT21H
MOVDX,OFFSETMESS
INT21H
LOP:
MOVAH,08H
INT21H
PUSHAX
CMPAL,'F'
JZBG1
POPAX
PUSHAX
CMPAL,'E'
JZBG2
POPAX
PUSHAX
CMPAL,'P'
JZBG3
POPAX
CMPAL,'Q'
JZOVER
JMPLOP
BG1:
MOVDX,OFFSETMESS2
CALLDISP
JMPSTART
BG2:
MOVDX,OFFSETMESS3
CALLDISP
JMPSTART
BG3:
MOVDX,OFFSETMESS4
CALLDISP
JMPSTART
LOP1:
MOVAH,06H
MOVDL,0FFH
INT21H
JNZOVER
JMPLOP1
OVER:
MOVAH,0
MOVAL,BYTEPTR[MODE]
INT10H
MOVAX,4C00H
INT21H
DISPPROCNEAR
PUSHAX
PUSHDX
MOVAH,09
INT21H
MOVDX,OFFSETMES
INT21H
LOOP1:
MOVAH,06H
MOVDL,0FFH
INT21H
JNZLOOP2
JMPLOOP1
LOOP2:
POPDX
POPAX
RET
DISPENDP
CODEENDS
ENDSTART
上机调试结果: