dosbox汇编语言编写体育比赛计时程序,程序运行,屏幕显示00:00:00,并开始按秒计时。每按下一次空格键,在下一行显示当前暂停的时刻,最多可计10次暂停时间。按下Q键,程序退出。11.体育比赛计时程序,程序运行,屏幕显示00:00:00,并开始按秒计时。每按下一次空格键,在下一行显示当前暂停的时刻,最多可计10次暂停时间。按下Q键,程序退出。
时间: 2024-03-17 10:45:23 浏览: 402
以下是用汇编语言编写的体育比赛计时程序,可在 DOSBox 中运行:
```
.model small
.stack 100h
.data
timer db 0 ; 计时器
pauseTimes db 10 dup(0) ; 暂停时间
pauseCount db 0 ; 已暂停次数
.code
main proc
mov ax, @data
mov ds, ax ; 初始化数据段寄存器
mov ah, 0
int 1Ah ; 获取系统时间
mov timer, ch ; 初始化计时器为当前小时
mov timer+1, cl ; 初始化计时器为当前分钟
mov timer+2, dh ; 初始化计时器为当前秒钟
mov ah, 2
mov dl, '0'
int 21h ; 显示 '0'
int 21h ; 显示 '0'
mov dl, ':'
int 21h ; 显示 ':'
int 21h ; 显示 '0'
int 21h ; 显示 '0'
mov dl, ':'
int 21h ; 显示 ':'
int 21h ; 显示 '0'
int 21h ; 显示 '0'
mov dl, 0Dh
int 21h ; 换行
mov ah, 0
int 16h ; 等待用户按下键
timerLoop:
cmp pauseCount, 10
je exitProgram ; 如果已暂停 10 次,退出程序
mov ah, 0
int 1Ah ; 获取系统时间
sub dh, timer+2 ; 计算秒数差
sbb dl, timer+1
sbb cl, timer
; 如果不为 0,表示已经过了一秒钟
jnz printTimer
jmp checkInput
printTimer:
mov ah, 2
mov dl, (timer+1)/10 + '0'
int 21h ; 显示十位分钟
mov dl, (timer+1) mod 10 + '0'
int 21h ; 显示个位分钟
mov dl, ':'
int 21h ; 显示 ':'
mov dl, (timer+2)/10 + '0'
int 21h ; 显示十位秒钟
mov dl, (timer+2) mod 10 + '0'
int 21h ; 显示个位秒钟
mov dl, 0Dh
int 21h ; 换行
checkInput:
mov ah, 0
int 16h ; 等待用户按下键
cmp ah, 20h ; 如果是空格键
jne checkQKey
; 显示当前暂停的时刻
mov ah, 2
mov dl, ' '
int 21h ; 显示空格
mov dl, (timer+1)/10 + '0'
int 21h ; 显示十位分钟
mov dl, (timer+1) mod 10 + '0'
int 21h ; 显示个位分钟
mov dl, ':'
int 21h ; 显示 ':'
mov dl, (timer+2)/10 + '0'
int 21h ; 显示十位秒钟
mov dl, (timer+2) mod 10 + '0'
int 21h ; 显示个位秒钟
mov dl, 0Dh
int 21h ; 换行
; 记录暂停时间
mov pauseTimes+pauseCount, ch
mov pauseTimes+pauseCount+1, cl
mov pauseTimes+pauseCount+2, dh
inc pauseCount ; 已暂停次数加 1
jmp timerLoop
checkQKey:
cmp ah, 10h ; 如果是 Q 键
jne timerLoop ; 继续计时
; 显示暂停的时刻
mov ah, 2
mov dl, ' '
int 21h ; 显示空格
mov dl, (timer+1)/10 + '0'
int 21h ; 显示十位分钟
mov dl, (timer+1) mod 10 + '0'
int 21h ; 显示个位分钟
mov dl, ':'
int 21h ; 显示 ':'
mov dl, (timer+2)/10 + '0'
int 21h ; 显示十位秒钟
mov dl, (timer+2) mod 10 + '0'
int 21h ; 显示个位秒钟
mov dl, 0Dh
int 21h ; 换行
; 显示所有暂停时间
mov ah, 2
mov dl, ' '
int 21h ; 显示空格
mov dl, 'P'
int 21h ; 显示 'P'
mov dl, 'a'
int 21h ; 显示 'a'
mov dl, 'u'
int 21h ; 显示 'u'
mov dl, 's'
int 21h ; 显示 's'
mov dl, 'e'
int 21h ; 显示 'e'
mov dl, ' '
int 21h ; 显示空格
mov cx, 10 ; 循环显示 10 次
mov si, offset pauseTimes
pauseLoop:
mov dl, [si+1]/10 + '0'
int 21h ; 显示十位分钟
mov dl, [si+1] mod 10 + '0'
int 21h ; 显示个位分钟
mov dl, ':'
int 21h ; 显示 ':'
mov dl, [si+2]/10 + '0'
int 21h ; 显示十位秒钟
mov dl, [si+2] mod 10 + '0'
int 21h ; 显示个位秒钟
mov dl, 0Dh
int 21h ; 换行
add si, 3 ; 下一个暂停时间
loop pauseLoop
; 退出程序
mov ah, 4Ch
xor al, al
int 21h
exitProgram:
; 显示所有暂停时间
mov ah, 2
mov dl, ' '
int 21h ; 显示空格
mov dl, 'P'
int 21h ; 显示 'P'
mov dl, 'a'
int 21h ; 显示 'a'
mov dl, 'u'
int 21h ; 显示 'u'
mov dl, 's'
int 21h ; 显示 's'
mov dl, 'e'
int 21h ; 显示 'e'
mov dl, ' '
int 21h ; 显示空格
mov cx, 10 ; 循环显示 10 次
mov si, offset pauseTimes
pauseLoop2:
mov dl, [si+1]/10 + '0'
int 21h ; 显示十位分钟
mov dl, [si+1] mod 10 + '0'
int 21h ; 显示个位分钟
mov dl, ':'
int 21h ; 显示 ':'
mov dl, [si+2]/10 + '0'
int 21h ; 显示十位秒钟
mov dl, [si+2] mod 10 + '0'
int 21h ; 显示个位秒钟
mov dl, 0Dh
int 21h ; 换行
add si, 3 ; 下一个暂停时间
loop pauseLoop2
; 退出程序
mov ah, 4Ch
xor al, al
int 21h
main endp
end main
```
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)