汇编语言显示日期和时间输入D显示日期,输入T显示时间,输入Q退出程序
时间: 2024-02-28 15:06:23 浏览: 69
汇编显示日期及时间
以下是一个在 DOS 系统下使用汇编语言显示日期和时间,并根据用户输入显示对应内容或退出程序的示例程序:
```
.model small
.stack 100h
.data
msg1 db "Today is ", "$"
msg2 db "Current time is ", "$"
input db 10, 0 ; 用户输入的内容
.code
main proc
mov ah, 2Bh ; 调用 DOS 中断 2Bh 获取日期
int 21h ; 执行中断
mov cl, dl ; 保存日期
mov ah, 2Ah ; 调用 DOS 中断 2Ah 获取月份
int 21h ; 执行中断
mov dl, dh ; 保存月份
mov ah, 2Ch ; 调用 DOS 中断 2Ch 获取年份
int 21h ; 执行中断
mov bl, dh ; 保存年份
; 无限循环,等待用户输入
input_loop:
mov ah, 0 ; 读取用户输入
int 16h ; 执行中断
cmp al, 'D' ; 如果用户输入 D,则显示日期
je display_date
cmp al, 'T' ; 如果用户输入 T,则显示时间
je display_time
cmp al, 'Q' ; 如果用户输入 Q,则退出程序
je quit_program
jmp input_loop
; 显示日期
display_date:
mov ah, 9h ; 调用 DOS 中断 9h 显示字符串
lea dx, msg1 ; 加载消息
int 21h ; 执行中断
mov ah, 2 ; 将数字转换为 ASCII 码并显示
mov al, dl
add al, 30h ; 转换为 ASCII 码
mov dl, al
int 21h
mov ah, 2 ; 将数字转换为 ASCII 码并显示
mov al, cl
add al, 30h ; 转换为 ASCII 码
mov dl, al
int 21h
mov ah, 2 ; 将数字转换为 ASCII 码并显示
mov al, bl
add al, 30h ; 转换为 ASCII 码
mov dl, al
int 21h
jmp input_loop
; 显示时间
display_time:
mov ah, 2Dh ; 调用 DOS 中断 2Dh 获取小时
int 21h ; 执行中断
mov cl, dh ; 保存小时
mov ah, 2Eh ; 调用 DOS 中断 2Eh 获取分钟
int 21h ; 执行中断
mov dl, dh ; 保存分钟
mov ah, 2Fh ; 调用 DOS 中断 2Fh 获取秒钟
int 21h ; 执行中断
mov bl, dh ; 保存秒钟
mov ah, 9h ; 调用 DOS 中断 9h 显示字符串
lea dx, msg2 ; 加载消息
int 21h ; 执行中断
mov ah, 2 ; 将数字转换为 ASCII 码并显示
mov al, cl
add al, 30h ; 转换为 ASCII 码
mov dl, al
int 21h
mov ah, 2 ; 将数字转换为 ASCII 码并显示
mov al, dl
add al, 30h ; 转换为 ASCII 码
mov dl, al
int 21h
mov ah, 2 ; 将数字转换为 ASCII 码并显示
mov al, bl
add al, 30h ; 转换为 ASCII 码
mov dl, al
int 21h
jmp input_loop
; 退出程序
quit_program:
mov ah, 4Ch ; 调用 DOS 中断 4Ch 退出程序
int 21h ; 执行中断
main endp
end main
```
该程序通过一个无限循环来等待用户输入 D、T 或 Q,并根据输入内容执行对应的操作。用户输入 D 时,程序会显示当前日期;用户输入 T 时,程序会显示当前时间;用户输入 Q 时,程序会退出。
阅读全文