东南大学信息学院微机实验报告九
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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