东南大学信息学院微机实验报告九

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

实验九

一、实验目的

1.熟悉系统功能调用INT 21H的有关功能

2.编写时钟程序

二、实验任务

1.执行时钟程序时,屏幕上显示提示符“:”,由键盘输入当前时、分、秒值,即XX:XX:XX,随即显示时间并不停地计时。

2.当有键盘按下时,立即停止计时,返回DOS。

三、源程序

DATA SEGMENT

BUFFER DB 11

DB ?

DB 10 DUP(?)

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

OUTCLK: MOV AX,DATA

MOV DS,AX

MOV DL,':'

MOV AH,2

INT 21H

MOV DX,OFFSET BUFFER

MOV AH,0AH ;输入字符串

INT 21H

MOV BX,OFFSET BUFFER+2

MOV AL,[BX] ; 时针,ASCII码转非压缩BCD

CMP AL, 03AH

JAE ERROR1

CMP AL, 02FH

JBE ERROR1

AND AL,0FH

MOV [BX],AL

INC BX

MOV AL,[BX]

AND AL,0FH

MOV [BX],AL

INC BX

INC BX

MOV AL,[BX] ; 分针

AND AL,0FH

MOV [BX],AL

INC BX

MOV AL,[BX]

AND AL,0FH

MOV [BX],AL

INC BX

INC BX

MOV AL,[BX] ;秒针

AND AL,0FH

MOV [BX],AL

INC BX

MOV AL,[BX]

AND AL,0FH

MOV [BX],AL

MOV BX,OFFSET BUFFER+2

CALL TOBCD ; 时针,两位非压缩BCD转换成两位压缩BCD MOV CH, AL

ADD BX,3

CALL TOBCD

MOV DH, AL ; 分针,两位非压缩BCD转换成两位压缩BCD MOV DH,AL

ADD BX,3

CALL TOBCD ; 秒针,两位非压缩BCD转换成两位压缩BCD MOV DL,AL

CMP CH, 24H

JAE ERROR

CMP DH, 60H

JA ERROR

CMP DL, 60H

JA ERROR

ERROR1: MOV AH,4CH

INT 21H

AGAIN: CALL DELAY

MOV AL,DL ; 秒针加1

ADD AL,1

DAA

MOV DL,AL

CMP AL,60H

JA ERROR

JNE DISPY

MOV AL,DH

ADD AL,1 ; 分针 DAA

MOV DH,AL

CMP AL,60H

JA ERROR

JNE DISPY

MOV DH,0

MOV AL,CH

ADD AL,1

DAA ; 时针 MOV CH,AL

CMP AL,24H

JAE ERROR

JNE DISPY

MOV CH,0

ERROR: MOV DL, 0

MOV DH, 0

MOV CH, 0

DISPY: MOV BX,OFFSET BUFFER

MOV AL,0DH

MOV [BX],AL

INC BX

MOV AL,0

MOV [BX],AL

INC BX

MOV AL,CH

CALL TRAN

INC BX

MOV AL,':'

MOV [BX],AL

INC BX

MOV AL,DH

CALL TRAN

INC BX

MOV AL,':'

MOV [BX],AL

INC BX

MOV AL,DL

CALL TRAN

INC BX

MOV AL,'$'

MOV [BX],AL

PUSH CX

PUSH DX

MOV DX,OFFSET BUFFER

MOV AH,9

INT 21H

MOV AH,06H

MOV DL,0FFH

INT 21H

POP DX

POP CX

POP BX

JNE GO

JMP AGAIN

GO: MOV AH,4CH

INT 21H

TOBCD PROC ; 两位非压缩BCD转换成压缩 MOV AL,[BX]

MOV CL,4

SHL AL,CL

OR AL,[BX+1]

RET

TOBCD ENDP

TRAN PROC ; BCD转ASCII

MOV CL,AL

SHR AL,1

SHR AL,1

SHR AL,1

SHR AL,1

OR AL,30H

MOV [BX],AL

INC BX

MOV AL,CL

AND AL,0FH

OR AL,30H

MOV [BX],AL

RET

TRAN ENDP

DELAY PROC

PUSH CX

PUSH AX

MOV AX,0FFFFH

FIR: MOV CX,02FFFH

GOON: DEC CX

相关文档
最新文档