文档详情

汇编语言课程设计17013.doc

发布:2017-08-29约8.84千字共17页下载文档
文本预览下载声明
计算机原理与汇编语言设计报告 题 目: 用汇编语言编写一个程序工程1102班 学 号: 0909111612 姓 名: 田刚 指导教师: 刘丽2014.3.14 课程设计的题目 用汇编语言编写一个秒表(毫秒)计时程序,要求有屏幕时间显示、启停等功能。 设计目的 熟练使用汇编指令以及熟悉汇编语言的编程方式并且了调用功能与DOS 学会利用程序手段或者CPU定时的功能实现定时程序。 设计思路:是实现对键盘输入的字母的判断,(、(Memeory)、E(End)、C(Continue)、R(estart)Zero)),判断是否等于相应的字母,如果相等,则调用不同的函数实现不同的功能。光标程序,让表相应的地方显示。 CPU的延时程序,将其数字转换为码实现秒表显示 解决方案: 通过调用INT 21H的8号功能实现控制字符的输入, 2号功能实现字符的输出,9号功能实现字符串的输出。通过调用INT 10H 的2号功能实现光标定位,AH=0H号功能设置显示方式、AH=7H号功能实现向下滚屏、AH=13H号功能实现彩色输出。利用系统执行指令的时钟周期,编写延时程序,通过调用延时程序实现一秒的计时。通过8位数ASCII与BCD转换。1、程序中未用到特别的数据结构,只在记忆时了堆栈。S如果不等则在循环执行启动子程序中动态等待直到输入的字符为S时计时开始。 IOSET(设置光标位置子程序) 通过设置光标子程序来设置显示的区域。一般整个屏幕可显示25行80列屏幕左上角字符位置为0行0列右下脚字符为24行79列对应十六进制为左上脚为00右下脚为184F。入口信息为AH=2要设置光标BH=0页号DHDL=00要置光标于0行0列。DX赋10 值为0D27H光标置位于屏幕中央。 GO(初始化显示子程序) 通过将在数据段定义的BUFFER数组的首址赋给BX将待显示初值字符串0000存入数组中的相应位置当每次复位以后重新调用该子程序将程序的执行结果修正为0000并显示于屏幕上从而实现了程序的初值设定和复位功能。 TIME(延时子程序) 计算机每执行一条指令虽然很快但是需要一些时间因此在本程序中可以通过延时程序让计算机去执行一些无关的程序来达到时钟秒与百分之一秒转换时的时间延迟。每条指令执行时间的长短是以计算机的时钟周期为基本单位的因此不同的计算机可以通过修改延时程序数值来使其达到准确计时。 TRAN(压缩BCD码转ASCII码程序) 计算机显示数据时使用的是数据是ASCII码而在程序设计当中程序的计时数值是BCD码因此需要通过此子程序实现将BCD码转变为ASCII码以备送屏幕显示。因为时钟计时的压缩BCD码每一个数都有8位因此将其右移四位并加30H将其高位数字取出送BX存放再将其低位数字取出加30H,送BX存放达到不同码制之间转换的目的。 复位、停止等功能的实现是通过对输入字符的判断和各种循环的嵌套调用实现。整体上本程序的主要设计原理是先在数据段中定义“S START R RESET E END C CONTINUE”控制字符串并定义缓冲区。将数据段的段基址送DS并将“S START R RESET E END C CONTINUE”显示同时调用GO子程序将显示结果初始化。同时设置光标启动计时启动延时程序将百分之一秒加1并将其设置为压缩BCB码当其CF不为1时送屏幕显示当其为1时将其设置为0并在秒上加1当秒等于60时其置0当其小于60时送屏幕显示。在计时过程中如果键入R则将其复位并重新开始计时当键入E时计时暂停如果键入C则继续计时如果键入R则复位设置为0000当再次键入S时再次计时开始。 程序要求 能够在上实现秒表的 实现秒表的启复位等功能 具有记忆功能 1)交互界面显示效果 2)调用复制程序GO 3)调用光标置位程序 4)等待开始信号 5)赋初值,调用延时程序 6)ASCII与BCD码的转 程序代码: 1、数据段缓冲区的定义 DATA SEGMENT ;设置数据段 BUF DB Start(S) Memory(M) End(E) Continue(C) Restart(R) Zero(Z) M E M O R Y$ ;设置功能说明 MESS DB * * * * * * * *
显示全部
相似文档