[汇编] 屏幕中间显示数字时钟

 

 

 

复制代码
  1 ;显示系统时间程序
  2 
  3 data segment
  4     ; add your data here! 
  5     hour db '?'
  6     minute db '?'
  7     second db '?'
  8     time db   "00:00:00$"  
  9     temp db '?'  
 10     now  db '?'
 11     want db '?'
 12     pkey db "press any key...$"
 13 ends
 14 
 15 stack segment
 16     dw   128  dup(0)
 17 ends
 18 
 19 code segment
 20 ;---------------------------------------------
 21 main proc far
 22     call init_register  ;初始化 
 23 SiXunHuan:
 24     mov want,1D         ;延时3S
 25     call delay                  
 26     call setshow
 27     call show_time      ;显示  
 28     loop SiXunHuan
 29     
 30     call last_show      ;结果
 31     ret
 32 main endp;    
 33 ;---------------------------------------------
 34 init_register proc near;set segment registers:
 35     mov ax, data
 36     mov ds, ax
 37     mov es, ax 
 38     ret   
 39 init_register endp
 40 ;---------------------------------------------
 41 show_time proc near ;时间子程序   
 42     mov ah,2Ch
 43     int 21h         ;获取时间
 44     mov hour,ch
 45     mov minute,cl
 46     mov second,dh
 47 
 48     mov ax,0        ;计算到字符串时间
 49     mov al,hour 
 50     mov temp,10D
 51     div temp
 52     add al,30H
 53     mov time[0],al
 54     add ah,30H
 55     mov time[1],ah
 56       
 57     mov ax,0
 58     mov al,minute 
 59     mov temp,10D
 60     div temp
 61     add al,30H
 62     mov time[3],al
 63     add ah,30H
 64     mov time[4],ah   
 65     
 66     mov ax,0
 67     mov al,second 
 68     mov temp,10D
 69     div temp
 70     add al,30H
 71     mov time[6],al
 72     add ah,30H
 73     mov time[7],ah   
 74         
 75     lea dx,time     ;10中断显示时间
 76     mov ah,09H
 77     int 21H 
 78     
 79     ret
 80 show_time endp   
 81 ;---------------------------------------------
 82 last_show proc near ;最后显示东西  
 83     lea dx, pkey   ; output string at ds:dx
 84     mov ah, 9
 85     int 21h        
 86     
 87     ; wait for any key....and end    
 88     mov ah, 1
 89     int 21h
 90     
 91     mov ax, 4c00h ; exit to operating system.
 92     int 21h  
 93     ret
 94 last_show endp  
 95 ;---------------------------------------------  
 96 delay proc near     ;延时函数,放在want为想要延时的秒数
 97     mov ah,2Ch
 98     int 21h         ;获取时间 
 99     mov now,dh
100     
101     mov ax,0
102     mov al,now 
103     add al,want
104     mov temp,60D
105     div temp
106     mov want,ah  
107 del:
108     mov ah,2Ch
109     int 21h
110     cmp dh,want
111     jz  next
112     loop del
113 next:
114     ret
115 delay endp      
116 ;--------------------------------------------- 
117 setshow proc near   ;设置光标位置位置  
118     mov dh,12      ;row-1
119     mov dl,34      ;columun-1
120     mov bh,0
121     mov ah,2
122     int 10h
123 setshow endp  
124 ;--------------------------------------------- 
125 clear proc near
126     ret
127 clear endp
128 ;--------------------------------------------- 
129 end code
130 end
复制代码

 

posted @   beautifulzzzz  阅读(1550)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示