![]() |
#2
W6498972007-08-17 20:53
代码如下
;;此程序被用来读取cmos ram中的时间信息并且在屏幕中显示日期和时间信息(年/月/日 时:分:秒) stack segment byte 20 dup(0) stack ends code segment Read_Time:mov cx,24h push dx push ax push bx push cx push es mov ax,stack mov ss,ax mov sp,20 push bp mov bp,sp ;保存寄存器内容防止其含有重要内容 mov ah,0 mov cx,3 L: mov al,0 out 70h,al in al,71h mov ah,al and al,00001111b mov bh,0 mov bl,al add bl,30h push bx push cx mov cx,4 L2: shr ah,1 loop L2 pop cx mov bl,ah add bl,30h push bx add al,2 loop L;;;;至此读取了时间信息 add al,3;;;;;;使(al)=7指向日期信息所在的单元 mov cx,3;;;;;;;三次循环读取日期信息 L3: out 70h,al in al,71h mov ah,al and al,00001111b mov bl,al add bl,30h push bx push cx mov cx,4 L4: shr ah,1 loop L4 pop cx mov bl,ah add bl,30h push bx add al,1 loop L3;;;;至此读取了日期信息 mov cx,[bp+4];;;;恢复颜色属性 Show_Time:mov ax,0b800h mov es,ax mov bx,8*160+32*2 mov byte ptr es:[bx],33h inc bx mov es:[bx],cl inc bx mov byte ptr es:[bx],29h inc bx mov es:[bx],cl inc bx mov dx,[bp+4] L5: pop ax mov es:[bx],al inc bx mov es:[bx],dl inc bx pop ax mov es:[bx],al inc bx mov es:[bx],dl inc bx mov byte ptr es:[bx],2fh inc bx mov es:[bx],dl inc bx loop L5;;;显示年月日 mov cx,3 L6: pop ax mov es:[bx],al inc bx mov es:[bx],dl inc bx pop ax mov es:[bx],al inc bx mov es:[bx],dl inc bx mov byte ptr es:[bx],3ah inc bx mov es:[bx],dl inc bx loop L6;;;;显示时间 mov ax,4c00h int 21h code ends end Read_Time |
