微机原理课程设计报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

微机原理

课程设计报告

——电子表程序设计

^

(一)设计任务:

用汇编语言设计一电子表程序,要求:

(1)实现秒、分、时的计时,并显示于屏幕中央

(2)能够校时

(3)能够半点、整点报时

(二)设计原理

该程序主要由三部分构成:时间设置、延时程序和时钟显示。

(1)时间设置

①输入初始时间

先调用DOS操作系统模块2,在显示屏上显示‘:’,再调用DOS操作系统模块10,提示输入初始时间。由键盘输入的时间以字符串形式存放在已定义的存储器缓冲区内,继而调用TRAN1转换子程序和MUL10乘10子程序,将存放在存储器缓冲区内的ASCII字符转换为压缩BCD码,并将时、分、秒的值放置在寄存器CH、DH、DL中。

②暂停计时

按Pause Break键即可暂停计时,再按下任意键恢复计时

③重新输入时间

在程序运行时,可按下Esc键重新输入初始时间,此时程序检测到Esc(ASCII码为1BH)被按下,返回①步提示重新输入时间。

以上两步可实现校时的功能。

④半点、整点报时

程序运行时,分钟值每次改变都需要与30、60比较,若相等,则调用DOS操作系统模块7使计算机响铃并在时间后显示‘ ------’。同时若分、秒值为60则需进位,时为24时进位,保证时钟程序的正确性。

(2)延时程序

计算机在执行指令时,各种操作都按指令执行,但在像程序控制器那样由计算机发出指令控制外部设备是,由于外部设备所具有的机械惯性或其他原因,需要在计算机发出指令后有规律地延迟或等待一段时间。这类延时,可以用硬件延时来完成,单用软件来实现也是一种方便和常用的方法。

计算机执行每一条指令,虽然很快,但还是需要一段时间的。因此从理论上讲,可在程序中加一些与程序无关的指令去完成,要计算指令执行的时间,又不能过多的为了延时而增加编制程序的工作量。因此,编制延时程序,应尽量采用较少的指令,节约存储器,并且不能对主程序造成影响。

每条指令执行时间的长短,是以计算机的时钟周期为基本单位的。当CPU采用的时钟频率一定时,时钟周期也为定值。因此可根据时钟周期的多少来计算执行指令所需的时间。完成本设计任务使用的计算机采用Intel Pentium 4处理器,主频为,时钟周期约为。

通过时间约1s的长延时累加,并以时、分、秒的形式显示出来,就可以编写出一个时钟程序。

(3)时钟显示

①设置光标位置子程序IOSET

一般的显示屏可显示25行、80列字符,屏幕左上角字符位置为0行0列,右下角字符位置为24行79列,对应于十六进制为:左上角为(0,0),右下角为(18,4F)。

设置光标,可调用BIOS系统,用汇编语句调用中断INT 10H,其入口信息为

(AH)=2 要设置光标;

(BH)=0 页号;

(DH,DL)=( 0CD,24) 置光标于行、列数,本程序要求置光标于屏幕中央,即为12行36列(十进制)。

②清除屏幕子程序IOCLR

当开始执行程序时,总希望有一个洁净的屏幕,此时可使显示屏幕作上滚动作,使屏幕留下一片空白,也可以清楚屏幕的一部分,是这部分空白留作它用。要使屏幕上滚,可用汇编语句调用中断INT 10H,其入口信息为

(AH)=6 是屏幕上滚;

(AL)=00 上滚行数,若(AL)=0,则整屏为空白;

(CH,CL)= 滚动区域的左上角行列号,本程序中(CX)=0;

(DH,DL)= 滚动区域的右下角行列号,本程序中(DX)=184FH;

(BG)= 空白行属性,当(BH)=7时,为正规属性(黑白)。

③屏幕显示程序DISPY

显示屏幕作为常用的输出设备,可用来显示运算的中间结果或最终数据,也可用来显示表示正确完成或检验出的错误信息。为了显示表示正确或显示错误的信息,必须在数据段中以字符串形式将提示信息加以定义,然后由显示器在屏幕上加以显示。DOS系统中的显示功能模块号为2,每次调用仅能显示DL中的一个字符。为显示字符串,可调用DOS系统另一功能,用汇编语句调用中断INT 21H,其入口信息为

(AH)=9 显示字符串的功能模块号;

^

(DS:DX) 指向字符串的首地址,要求字符串以字符‘$’结尾。

(三)框图

(四)程序清单

DAT SEGMENT

RING DB ' ------$'

FLAG DB 0

BUFFER DB 10

DB

`

DB 10 DUP ()

DAT ENDS

STA SEGMENT PARA STACK 'STACK'

STAPN DB 100 DUP ()

TOP EQU LENGTH STAPN

STA ENDS

COD SEGMENT

START PROC FAR

|

ASSUME CS:COD,DS:DAT,SS:STA

MOV AX,DAT

MOV DS,AX

MOV AX,STA

MOV SS,AX

MOV AX,OFFSET TOP

MOV SP,AX

MAIN: ;主程序

`

PUSH BX

PUSH CX

PUSH DX

CALL IOCLR ;清除屏幕

CALL IOSET ;设置光标位置

POP DX

POP CX

POP BX

MOV DL,':'

MOV AH,2 ;显示字符":",提示输入时间 INT 21H

MOV DX,OFFSET BUFFER

MOV AH,10

INT 21H

MOV BX,OFFSET BUFFER+2

CALL TRAN1

INC BX

INC BX

相关文档
最新文档