DOS系统时间调用计时
时间: 2023-08-21 11:12:07 浏览: 197
在DOS系统中,可以使用INT 1Ah中断来获取系统时间和计时。具体地,可以使用AH寄存器来指定需要的功能代码,例如:
- 00h:获取系统时间
- 01h:等待指定时间
- 02h:获取实时时钟时间
- 04h:获取计时器时间
- 05h:等待指定计时器时间
下面是一个获取系统时间和计时的示例程序:
```
.model small
.stack 100h
.data
currTime db 8 dup(?) ; 存储当前时间
startTime dw ? ; 存储开始计时时刻
endTime dw ? ; 存储结束计时时刻
elapsedTime dd ? ; 存储经过的时间(单位:1/18.2秒)
.code
main proc
mov ax, @data
mov ds, ax
; 获取系统时间
mov ah, 2 ; 功能码02h表示获取实时时钟时间
int 1ah ; 调用中断
mov currTime, ch ; 小时
mov currTime+1, cl ; 分钟
mov currTime+2, dh ; 秒数
mov currTime+3, dl ; 百分之几秒
; 开始计时
mov ah, 0 ; 功能码00h表示获取系统时间
int 1ah ; 调用中断
mov startTime, cx ; 存储当前时刻
; 等待一段时间
mov ah, 01h ; 功能码01h表示等待指定时间
mov cx, 0 ; 等待1秒(1秒=18.2*5个计时器滴答)
mov dx, 91h
int 1ah ; 调用中断
; 结束计时
mov ah, 0 ; 功能码00h表示获取系统时间
int 1ah ; 调用中断
mov endTime, cx ; 存储当前时刻
; 计算经过的时间
sub endTime, startTime ; 计算结束时刻和开始时刻的差值
mov elapsedTime, ax ; 存储差值
; 显示结果
mov ah, 09h ; 功能码09h表示显示字符串
lea dx, currTime ; 加载当前时间字符串
int 21h ; 调用中断
mov ah, 02h ; 功能码02h表示显示数字
mov dl, elapsedTime ; 加载经过的时间(低字节)
mov dh, elapsedTime+2 ; 加载经过的时间(高字节)
add dl, 48 ; 转换为ASCII码
add dh, 48
mov ah, 02h ; 显示数字
int 21h ; 调用中断
mov ah, 4ch
int 21h
main endp
end main
```
该程序首先使用INT 1Ah中断获取系统时间,然后开始计时,等待一段时间后再结束计时,并计算经过的时间。最后将结果显示在屏幕上。
阅读全文