汇编语言显示日期和时间输入D显示日期,输入T显示时间,输入Q退出程序dosbox运行
时间: 2024-02-28 07:06:24 浏览: 196
好的,我明白了你的问题。以下是汇编语言的代码,可以实现你的需求:
```
.model small
.stack 100h
.data
prompt1 db 'Enter D to display date, T to display time, or Q to quit: $'
prompt2 db 'Invalid input! Enter D to display date, T to display time, or Q to quit: $'
datestr db 'Today is $'
timestr db 'The time is $'
crlf db 0dh, 0ah, '$'
.code
main proc
mov ax, @data
mov ds, ax
; display initial prompt
mov ah, 9h
lea dx, prompt1
int 21h
input_loop:
; read user input
mov ah, 1h
int 21h
; check input
cmp al, 'D'
je display_date
cmp al, 'T'
je display_time
cmp al, 'Q'
je exit_program
; display error message and prompt again
mov ah, 9h
lea dx, prompt2
int 21h
jmp input_loop
display_date:
; display "Today is" message
mov ah, 9h
lea dx, datestr
int 21h
; get current date
mov ah, 2ah
int 21h
; display date
mov ah, 2h
mov dl, dh ; day
add dl, 30h
int 21h
mov dl, '/'
int 21h
mov dl, dl ; month
add dl, 30h
int 21h
mov dl, '/'
int 21h
mov dh, dl ; year (high byte)
shr dh, 4
add dh, 30h
mov dl, dh ; year (low byte)
and dl, 0fh
add dl, 30h
int 21h
; display newline
mov ah, 9h
lea dx, crlf
int 21h
; prompt again
jmp input_loop
display_time:
; display "The time is" message
mov ah, 9h
lea dx, timestr
int 21h
; get current time
mov ah, 2ch
int 21h
; display time
mov ah, 2h
mov dl, ch ; hour
shr dl, 4
add dl, 30h
mov dh, ch ; hour
and dh, 0fh
add dh, 30h
int 21h
mov dl, ':'
int 21h
mov dl, cl ; minute
shr dl, 4
add dl, 30h
mov dh, cl ; minute
and dh, 0fh
add dh, 30h
int 21h
mov dl, ':'
int 21h
mov dl, dh ; second
shr dl, 4
add dl, 30h
mov dh, dh ; second
and dh, 0fh
add dh, 30h
int 21h
; display newline
mov ah, 9h
lea dx, crlf
int 21h
; prompt again
jmp input_loop
exit_program:
mov ah, 4ch
int 21h
main endp
end main
```
你可以将代码保存为一个文件,例如 `datetime.asm`,然后使用汇编器将其编译成可执行文件。在 DOSBox 中运行可执行文件即可。
注意,本代码仅适用于 DOS 系统。如果你想在其他系统中运行,需要进行相应的修改。
阅读全文