8086汇编显示系统时间
时间: 2023-06-17 19:06:29 浏览: 425
精选_毕业设计_基于80x86汇编实现的显示系统日期和时间_完整源码
要8086汇编中显示系统时间,需要使用DOS中断来获取系统时间。具体步骤如下:
1. 定义一个日期时间结构体:
```
;日期时间结构体
DATETIME STRUCT
year db ?
month db ?
day db ?
hour db ?
minute db ?
second db ?
DATETIME ENDS
```
2. 使用DOS中断21h来获取系统时间,将获取到的日期时间信息存储到结构体中:
```
;获取日期时间
MOV AH, 02CH ;DOS中断21h的功能号
INT 21H ;调用DOS中断
MOV DATETIME.year, CH
MOV DATETIME.month, CL
MOV DATETIME.day, DH
MOV DATETIME.hour, AL
MOV DATETIME.minute, AH
MOV DATETIME.second, DL
```
3. 将日期时间信息转换为可读的字符串格式:
```
;转换日期时间为字符串格式
MOV AH, 2 ;DOS中断21h的功能号
MOV DL, DATETIME.second
INT 21H ;将秒数转换为两个ASCII码字符
MOV BYTE PTR [TIME_STR+7], DL
MOV DL, DATETIME.second / 10
ADD DL, 30H
MOV BYTE PTR [TIME_STR+6], DL
MOV DL, DATETIME.minute
INT 21H ;将分钟数转换为两个ASCII码字符
MOV BYTE PTR [TIME_STR+4], DL
MOV DL, DATETIME.minute / 10
ADD DL, 30H
MOV BYTE PTR [TIME_STR+3], DL
MOV DL, DATETIME.hour
INT 21H ;将小时数转换为两个ASCII码字符
MOV BYTE PTR [TIME_STR+1], DL
MOV DL, DATETIME.hour / 10
ADD DL, 30H
MOV BYTE PTR [TIME_STR], DL
```
4. 最后将生成的时间字符串输出到屏幕上:
```
;输出时间字符串
MOV AH, 09H ;DOS中断21h的功能号
MOV DX, OFFSET TIME_STR
INT 21H ;输出时间字符串
```
完整代码如下:
```
;8086汇编显示系统时间
.MODEL SMALL
.STACK 100H
;日期时间结构体
DATETIME STRUCT
year db ?
month db ?
day db ?
hour db ?
minute db ?
second db ?
DATETIME ENDS
.DATA
TIME_STR DB " : : ",0
.CODE
MAIN PROC
;获取日期时间
MOV AH, 02CH ;DOS中断21h的功能号
INT 21H ;调用DOS中断
MOV DATETIME.year, CH
MOV DATETIME.month, CL
MOV DATETIME.day, DH
MOV DATETIME.hour, AL
MOV DATETIME.minute, AH
MOV DATETIME.second, DL
;转换日期时间为字符串格式
MOV AH, 2 ;DOS中断21h的功能号
MOV DL, DATETIME.second
INT 21H ;将秒数转换为两个ASCII码字符
MOV BYTE PTR [TIME_STR+7], DL
MOV DL, DATETIME.second / 10
ADD DL, 30H
MOV BYTE PTR [TIME_STR+6], DL
MOV DL, DATETIME.minute
INT 21H ;将分钟数转换为两个ASCII码字符
MOV BYTE PTR [TIME_STR+4], DL
MOV DL, DATETIME.minute / 10
ADD DL, 30H
MOV BYTE PTR [TIME_STR+3], DL
MOV DL, DATETIME.hour
INT 21H ;将小时数转换为两个ASCII码字符
MOV BYTE PTR [TIME_STR+1], DL
MOV DL, DATETIME.hour / 10
ADD DL, 30H
MOV BYTE PTR [TIME_STR], DL
;输出时间字符串
MOV AH, 09H ;DOS中断21h的功能号
MOV DX, OFFSET TIME_STR
INT 21H ;输出时间字符串
MOV AH, 4CH ;DOS中断21h的功能号
INT 21H ;程序结束
MAIN ENDP
END MAIN
```
阅读全文