用汇编语言写一个带注释的电子表
时间: 2023-12-03 10:04:28 浏览: 40
下面是一个用汇编语言写的简单的电子表,带有注释说明每一行代码的作用:
```
; 设置段地址为0B800h,这是显存地址,可以在屏幕上显示字符
MOV AX, 0B800h
MOV DS, AX
; 清屏,把显存中的每个字符都设置为空格
MOV AX, 0
MOV CX, 80*25 ; 80个字符一行,共25行
MOV DI, 0
CLEAR_SCREEN:
MOV WORD PTR [DI], 0x0720 ; 0x07表示白色,0x20表示空格
ADD DI, 2
LOOP CLEAR_SCREEN
; 初始化时间,设置小时、分钟、秒钟的初始值
MOV AH, 2CH ; 获取系统时间
INT 21H
MOV BL, CH ; 小时
MOV CL, DH ; 分钟
MOV DL, 0 ; 秒钟
; 显示时间
DISPLAY_TIME:
; 显示小时
MOV AX, BL
MOV BX, 10
DIV BX ; AX = BL / 10,余数保存在DX中
ADD AX, 30H ; 转换成字符
MOV WORD PTR [DI], AX ; 在显存中显示
ADD DI, 2
MOV AX, BL
AND AX, 0FH ; AX = BL % 10,去掉高位
ADD AX, 30H ; 转换成字符
MOV WORD PTR [DI], AX ; 在显存中显示
ADD DI, 2
; 显示冒号
MOV AX, 303Ah ; 0x30表示0,0x3A表示冒号
MOV WORD PTR [DI], AX ; 在显存中显示
ADD DI, 2
; 显示分钟
MOV AX, CL
MOV BX, 10
DIV BX
ADD AX, 30H
MOV WORD PTR [DI], AX
ADD DI, 2
MOV AX, CL
AND AX, 0FH
ADD AX, 30H
MOV WORD PTR [DI], AX
ADD DI, 2
; 显示冒号
MOV AX, 303Ah
MOV WORD PTR [DI], AX
ADD DI, 2
; 显示秒钟
MOV AX, DL
MOV BX, 10
DIV BX
ADD AX, 30H
MOV WORD PTR [DI], AX
ADD DI, 2
MOV AX, DL
AND AX, 0FH
ADD AX, 30H
MOV WORD PTR [DI], AX
ADD DI, 2
; 延时1秒
MOV CX, 1000h
CALL DELAY
; 秒钟加1,如果达到60,则分钟加1,小时加1(如果小时达到24,则归零)
INC DL
CMP DL, 60
JNE NO_MINUTE
MOV DL, 0
INC CL
CMP CL, 60
JNE NO_HOUR
MOV CL, 0
INC BL
CMP BL, 24
JNE NO_HOUR
MOV BL, 0
NO_HOUR:
NO_MINUTE:
; 跳回显示时间的循环
JMP DISPLAY_TIME
; 延时函数,用于让程序暂停1秒
DELAY:
PUSH CX
PUSH DX
MOV CX, AX
MOV DX, 0FFFFh
DELAY_LOOP:
DEC DX
JNZ DELAY_LOOP
DEC CX
JNZ DELAY_LOOP
POP DX
POP CX
RET
```
这个程序将会在屏幕上显示当前的时间,并且每隔一秒钟更新一次。在程序开始时,它会清空屏幕,然后获取系统时间,并把小时、分钟、秒钟的初始值保存下来。然后程序进入一个循环,每次循环都会显示当前的时间,并把秒钟加1。如果秒钟达到60,则分钟加1,小时加1(如果小时达到24,则归零)。程序会一直循环下去,直到用户按下Ctrl+C或者强制结束程序。
相关推荐
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.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)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)