光条式程序菜单设计实验报告 李国权 张炳岩 张琨Word文档下载推荐.docx

上传人:b****5 文档编号:20564074 上传时间:2023-01-24 格式:DOCX 页数:15 大小:100.87KB
下载 相关 举报
光条式程序菜单设计实验报告 李国权 张炳岩 张琨Word文档下载推荐.docx_第1页
第1页 / 共15页
光条式程序菜单设计实验报告 李国权 张炳岩 张琨Word文档下载推荐.docx_第2页
第2页 / 共15页
光条式程序菜单设计实验报告 李国权 张炳岩 张琨Word文档下载推荐.docx_第3页
第3页 / 共15页
光条式程序菜单设计实验报告 李国权 张炳岩 张琨Word文档下载推荐.docx_第4页
第4页 / 共15页
光条式程序菜单设计实验报告 李国权 张炳岩 张琨Word文档下载推荐.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

光条式程序菜单设计实验报告 李国权 张炳岩 张琨Word文档下载推荐.docx

《光条式程序菜单设计实验报告 李国权 张炳岩 张琨Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《光条式程序菜单设计实验报告 李国权 张炳岩 张琨Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。

光条式程序菜单设计实验报告 李国权 张炳岩 张琨Word文档下载推荐.docx

3.5实验结果………………………………………………………………………………15

第四章总结……………………………………………………………………………………16

参考文献…………………………………………………………………………………………18

光条式程序菜单设计

第一章前言

1.1实习目的

设计光条式程序菜单,了解菜单的制作方法

1.2实习要求

用箭头键改变选项的选择,用色带光条标明所选项,并可用确认键调用按序号定义的子程序。

1.3设计所需设备

计算机、emu8086软件

第二章中断技术

2.1介绍中断的概念中断技术

什么叫中断?

中断是一种使CPU中止正在执行的程序而转去处理特殊事件的操作。

这些引起中断的事件称为中断源,它们可能是来自外设的输入输出请求,也可能是计算机的一些异常事故或其它内部原因。

更具体地,我们定义CPU中断为这样一个过程:

在特定的事件(中断源,也称中断请求信号)触发下引起CPU暂停正在运行的程序(主程序),转而先去处理一段为特定事件而编写的处理程序(中断处理程序),等中断处理程序处理完成后,再回到主程序被打断的地方继续运行。

中断的作用一方面,有了中断功能,PC系统就可以使CPU和外设同时工作,使系统可以及时地响应外部事件。

而且有了中断功能,CPU可允许多个外设同时工作。

这样就大大提高了CPU的利用率,也提高了数据输入、输出的速度。

另一方面,有了中断功能,就可以使CPU及时处理各种软硬件故障。

计算机在运行过程中,往往会出现事先预料不到的情况或出现一些故障,如电源掉电、存储出错,运算溢出等等。

计算机可以利用中断系统自行处理,而不必停机或报告工作人员。

中断类型在PC机系统中,根据中断源的不同,中断常分为两大类:

硬件中断和软件中断。

2.2DOS及BIOS中断

DOS中断:

1、字符功能调用类(Character-OrientedFunction)

01H、07H和08H—从标准输入设备输入字符

02H—字符输出

03H—辅助设备的输入

04H—辅助设备的输出

05H—打印输出

06H—控制台输入/输出

09H—显示字符串

0AH—键盘缓冲输入

0BH—检测输入状态

0CH—清输入缓冲区的输入功能

2、文件操作功能(FileOperationFunction)

3CH—创建文件

3DH—打开文件

3EH—关闭文件

41H—删除文件

43H—读取/设置文件属性

45H—复制文件句柄

46H—重定义文件句柄

4EH—查找到第一个文件

4FH—查找下一个文件

56H—文件换名

57H—读取/设置文件的日期和时间

5AH—创建临时文件

5BH—创建新文件

67H—设置文件句柄数(最多文件数)

6CH—扩展的打开文件功能(打开、创建或替换文件)

3、记录操作功能(RecordFunction)

1AH—设置数据传输区地址42H—设置文件指针

2FH—读取数据传输区地址5CH—文件区域加锁或解锁

3FH—读文件或设备68H—提交文件缓冲区数据

40H—写文件或设备

4、内存分配功能(Memory-AllocationFunction)

48H—分配内存块

49H—释放内存块

4AH—重定义内存块的大小

58H—读取/设置内存分配策略

BIOS中断:

1、显示服务(Video 

Service——INT 

10H) 

00H 

—设置显示器模式

0CH 

—写图形象素 

01H 

—设置光标形状

0DH 

—读图形象素 

02H 

—设置光标位置

0EH 

—在Teletype模式下显示字符

03H 

—读取光标信息

0FH 

—读取显示器模式 

04H 

—读取光笔位置

10H 

—颜色 

05H 

—设置显示页

11H 

—字体 

06H、07H 

—初始化或滚屏

12H 

—显示器的配置 

08H 

—读光标处的字符及其属性

13H 

—在Teletype模式下显示字符串 

09H 

—在光标处按指定属性显示字符

1AH 

—读取/设置显示组合编码 

0AH 

—在当前光标处显示字符

1BH 

—读取功能/状态信息 

0BH 

—设置调色板、背景色或边框

1CH 

—保存/恢复显示器状态

2、键盘服务(Keyboard 

16H) 

00H、10H 

—从键盘读入字符

—设置重复率 

01H、11H 

—读取键盘状态

—设置键盘点击 

02H, 

—读取键盘标志

—字符及其扫描码进栈

3、时钟服务(Clock 

1AH) 

—读取时钟“滴答”计数

06H 

—设置闹钟 

—设置时钟“滴答”计数

07H 

—闹钟复位 

—读取时间

—读取天数计数 

—设置时间

—设置天数计数 

—读取日期 

80H 

—设置声音源信息 

—设置日期

第三章软件开发

3.1汇编语言及汇编工具简介

DEBUG调试程序能使用户接触到计算机内部,允许用户直接观察和修改CPU的寄存器;

能观察、修改内存单元;

允许直接输入机器指令并单步执行;

能反汇编程序。

可以说,debug是观察和了解计算机内部运行情况的有利助手。

DEBUG程序是DOS操作系统下输入、调试和运行汇编语言程序的工具软件。

它用于调试汇编语言程序,能使用户接触到计算机内部,允许用户直接观察和修改CPU的寄存器;

能反汇编程序,可以说,debug是观察和了解计算机内部运行情况的有利助手。

在WINDOWS操作系统下的DOS提示符下也可以运行DEBUG程序。

DOS命令提示符下是虚拟8086模式,在DEBUG下只能运行16位机的指令。

DEBUG中的数的表示都是十六进制数,且十六进制数后面不用H表示,以字母开头的十六进制数前面也可以不以0开头;

DEBUG中不允许用标识符;

DEBUG中不区分大小写,大小写可以混合使用。

EMU8086是学习汇编必不可少的工具,它结合了一个先进的原始编辑器、组译器、反组译器、具除错功能的软件模拟工具(虚拟PC),还有一个循序渐进的指导工具。

该软件包含了学习汇编语言的全部内容。

Emu8086集源代码编辑器,汇编/反汇编工具以及可以运行debug的模拟器(虚拟机器)于一身,此外,还有循序渐进的教程。

3.2软件介绍

由汇编语言编写成的程序“光条式菜单程序”。

程序菜单边框可以自定义大小、颜色以及位置,本设计配有流程图,系统初始化和功能程序清单,是一个比较完整的程序设计。

用户利用“↑↓←→”键移动色带的位置,然后按下回车键,被色带覆盖的那个菜单项就被选中。

3.3软件设计

3.3.1软件设计思路

一个多功能的软件常以菜单作为程序界面,用户可以通过菜单项直观地选择各项功能。

菜单分为分页式和下拉式(弹出式)两种,这里只设计没有分页功能的单页式菜单。

在设计菜单程序时应考虑3项内容:

界面设计、菜单项选择和菜单程序的组织与调用。

菜单项选择

最简单的方法是键入菜单项序号,程序根据序号转入相应的菜单项程序段。

较常见的方法是利用“色带”选择菜单项。

“色带”是颜色鲜明的条形光带,它可以覆盖一个菜单项,用户利用“↑↓←→”键移动色带的位置,然后按下回车键,被色带覆盖的那个菜单项就被选中。

使用色带选择,界面美观,操作简便,程序设计也不太复杂,是较为理想的方式。

菜单项程序的组织与调用

如果菜单项比较少,而且菜单项程序不太复杂,不一定要为每一个菜单项设计一个独立的程序,此时界面显示、菜单项选择和完成菜单项功能的程序段可以包含在一个程序中。

菜单项被选中后,可以使用JMP或CALL指令,调用相应的程序段。

如果菜单项比较多,菜单项程序又比较复杂,就应当为每一个菜单项设计一个独立的菜单项程序,此时菜单项程序的组织与调用就十分重要。

常用的光标控制键

常用的光标控制键PgDn、PgUp、↑↓←→,通过调用INT16H的0号子功能可以在AH寄存器中返回他们的扩展码。

3.3.2程序流程图设计

3.3.3软件各模块内容

1.定位显示彩色字符串的宏指令HONG

HONGMACROCOLUMN,LENGTH,COLOR;

定位显示彩色字符串

MOVAX,1301H;

AH=13显示字符串,AL=1光标跟随移动

MOVBX,COLOR;

属性字BX

MOVCX,LENGTH;

串长度CX

MOVDH,LINE;

行值DH

MOVDL,COLUMN;

列值DL

MOVBP,ADDR;

待显串偏移地址

INT10H

ENDM

HONG宏指令有3个参数:

LENGTH:

待显示字符串的长度

COLOR:

待显示字符串的属性字,0FH为黑底高亮白字。

30H为青蓝背景黑色字符串。

COLUMN:

待显示字符串首字符的列值,LINE单元用来存放字符显示的行值。

此外,数据段ADDR单元用来存放待显示字符串首字符的偏移地址。

2.色带的生成和移动

这是本程序的关键问题。

应该如何生成色带、使之覆盖一个菜单项呢?

只需调用HONG宏指令,给参数COLOR赋予属性字30H,重写这个菜单项即可。

同理,给COLOR赋予0FH属性字,重写这个菜单项,色带就消失了。

怎样使色带移动呢?

可以分两步进行:

先令当前色带消失,然后在下一个位置上生成色带,这样就达到了色带移动的功能。

这里的关键问题是要知道色带的当前位置和下一个位置。

3.字符串在内存中的分配

这是很多同学初学微机原理容易弄错的知识点,这里用图画显示出来:

3.4程序清单及详细注释

MOVBL,COLOR;

属性字BL

;

----------------------------------------------

DATASEGMENT

L0DB'

OPPONTIONS'

L1DB'

======================='

L2DB'

|APPEAR|'

L3DB'

|DISP|'

L4DB'

|FLASH|'

L5DB'

|EXIT|'

L6DB'

L7DB'

HELLOWORLD'

LENEQU$-L7

LISTEQU(80-LEN)/2

LINEDB0;

光标行值初始化

POSDW0;

色带位置初始化

TABLEDW?

L2,L3,L4,L5

ADDRDW0

FLAGEDB0

DATAENDS

-------------------------------------------

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,ES:

DATA

INIT:

MOVAX,DATA

MOVDS,AX

MOVES,AX

MOVAX,3;

AH=0设置显示模式AL=380*25彩色屏幕

INT10H;

相当于清屏

MOVLINE,8;

菜单起始行值LINE单元

MOVADDR,OFFSETL0;

L0偏移地址ADDR单元

CURSOR:

HONGLIST,LEN,0FH;

显示一行菜单(0FH黑色背景高亮白字)

ADDADDR,LEN;

下一串偏移地址ADDR单元

INCLINE;

下一菜单项行值LINE单元

CMPLINE,15;

显示7行字符串

JLCURSOR;

显示完毕后之后的显示都是针对色带

MOVPOS,1

CALLCOMPUTE;

每次显示色带前都要调用COMPUTE

HONGLIST+3,LEN-6,30H;

令色带覆盖菜单第一项30H青蓝背景黑字

SCAN:

MOVAH,1;

判断是否有键盘输入

INT16H

JZSCAN;

没有输入转等待输入(ZF=0缓冲器空)

MOVAH,0

INT16H;

读键盘缓冲区

CMPAH,80;

扫描码低八位0,高八位属于非ASXII码

JEDOWN;

是下箭头转下移处理

CMPAH,72;

上升箭头的扫描码高八位

JEUP;

是上箭头转上移处理

CMPAL,0DH

JEEXIT;

是回车转退出

JMPSCAN;

是其他字符则等待

DOWN:

CMPPOS,4;

先检测色带位置,等于4不动作

JESCAN

CALLCOMPUTE

HONGLIST+3,LEN-6,0FH;

令当前色带消失0FH黑色背景高亮白字

INCPOS;

POS+1

CALLCOMPUTE;

色带位置决定着行值LINE和字符串偏移地址

色带下移一项

JMPSCAN

UP:

CMPPOS,1;

先检测色带位置,等于1不动作

令当前色带消失

DECPOS;

POS-1

色带上移一项

APPEAR:

MOVLINE, 6

MOVADDR,OFFSETL7 

HONGLIST,LEN,0AH

CMPFLAGE,1

MOVFLAGE,1

JMPSCAN

DISP:

HONGLIST,LEN,00H

CMPFLAGE,0

MOVFLAGE,0

FLASH:

HONGLIST,LEN,8AH

FLA:

JEFLASH

EXIT:

MOVBX,WORDPTRPOS;

携带返回码

CMPBX,4

JEEXIT1

CMPBX,1

JEAPPEAR

CMPBX,2

JEDISP

CMPBX,3

JEFLA

JMPSCAN

EXIT1:

MOVAH,4CH

INT21H

COMPUTEPROC;

计算子程序

MOVDI,POS

ADDDI,DI

MOVAX,TABLE[DI]

ADDAX,3

MOVADDR,AX;

待显串偏移地址ADDR单元

MOVAL,BYTEPTRPOS

ADDAL,9

MOVLINE,AL

RET

COMPUTEENDP

CODEENDS

ENDINIT

3.5实验结果

第4章总结

当第一次看到微机实习的几个题目时,我们感觉很简单,但是结果却是:

我们还是耗费了几天直到把程序全部搞定。

其中还是遇到一些细节问题,但是最后我们把它们搞得滚瓜烂熟,非常透彻。

在为期五天的实习中,我们从最开始的眼高手低到苦思冥想,最后认真纠错,得以运行出正确的结果。

在最后的调试运行中,我们想到编一些实用的子程序,可是我们的知识掌握的实在有限,所以还是很有必要把Win32好好的学一学。

通过这次实习,深切的体会到培养动手能力的重要性,程序设计是一门实践性很强的东西,不仅要学好书本知识,还必须随时把所学知识投入实际应用之中,在此过程中多参照些相关资料,只有这样,才能达到学习的目的,才能学好一门编程语言。

这次实践中,我们感觉到自己掌握的知识很匮乏,尤其是当用到某个知识点时,经常是脑子有个印象,而确切的却想不起来。

通过这次实践,我们觉的必须很熟练的掌握专业知识,才能很顺畅的编程,才能提高效率,考虑问题也会更全面,编写的程序才会简洁而实用。

还是那句话,要想学好编程,必须做到:

敲,敲,敲,狂敲。

题目虽然简单,但是完成的效率不高,程序也可以写的更好。

我们确实应该多加练习,积累经验。

最后,非常感谢一直教导我们的朱老师,十分感谢。

参考文献:

微型计算机原理与接口技术冯博琴武宁主编清华大学出版社

微机原理与接口技术课程设计宋杰王志宏主编机械工业出版社

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1