在emu8086中编写一个计时器程序
时间: 2024-05-16 15:18:37 浏览: 111
下面是一个简单的计时器程序,它使用计数器来计算经过的时间,并在屏幕上显示。
```
include 'emu8086.inc'
org 100h
start:
mov al, 34h ; 设置计数器为34h
out 43h, al
mov al, ah
out 40h, al
mov al, al
out 40h, al
mov cx, 0 ; 初始化计时器
mov dx, 0
mov ah, 2 ; 清屏
mov bh, 0
mov dl, 80
mov dh, 25
int 10h
mov ah, 2 ; 设置光标位置
mov bh, 0
mov dh, 12
mov dl, 30
int 10h
mov ah, 0 ; 开始计时
int 1Ah
mov bx, dx ; 保存初始时间
mov ah, 2 ; 显示计时器
mov bh, 0
mov dl, 30
mov dh, 13
int 10h
mov ah, 9 ; 显示文字
mov dx, msg
int 21h
loop:
mov ah, 0 ; 获取当前时间
int 1Ah
sub dx, bx ; 计算经过的时间
mov bx, dx
mov ax, bx ; 转换为秒
mov cx, 1000
div cx
mov ah, 2 ; 显示计时器
mov bh, 0
mov dl, 30
mov dh, 13
int 10h
mov ah, 2 ; 显示秒数
mov bh, 0
mov dl, 35
mov dh, 13
int 10h
mov ah, 0 ; 显示秒数
mov al, dl
add al, 30h
mov ah, 0eh
int 10h
mov ah, 2 ; 显示毫秒数
mov bh, 0
mov dl, 38
mov dh, 13
int 10h
mov ax, bx ; 转换为毫秒
div cx
mov al, ah
mov ah, 0 ; 显示毫秒数
add al, 30h
mov ah, 0eh
int 10h
jmp loop
msg db 'Press any key to stop the timer...', 0
int 20h ; 程序结束
end start
```
这个程序使用计数器来计算经过的时间,并在屏幕上显示。它首先将计数器设置为34h,然后初始化计时器,清除屏幕并设置光标位置。然后它开始计时,并在屏幕上显示一个计时器和一条消息。
程序使用一个循环来计算经过的时间,并在屏幕上显示秒数和毫秒数。它将当前时间与初始时间相减,然后将结果转换为秒和毫秒。然后它在屏幕上显示秒数和毫秒数,并等待用户按下任意键停止计时器。
最后,程序使用 int 20h 指令结束程序。
阅读全文