获取当前的年 月 日 时 分 秒 asm

Posted on 2009-07-11 09:52  ddos  阅读(529)  评论(0编辑  收藏  举报
ASM
assume cs:code
;获取当前的年 月 日 时 分 秒
code segment
start:
    mov ax,0b800H
    mov es,ax
    mov di,12*120 ;显示
   
    mov al,9   ;COMS时钟存储的第九个单元(0 2 4 7 8 9)
    mov cx,3   ;循环3次 9 8 7 年月日
   s:
    push ax
     push cx ;入栈 因为后面会用到
        
    out 70H,al ;70H(地址端口)写入 al 单元
    in al,71H ;读取71H(数据端口)的数据到 al
   
    mov ah,al;将al的值赋给ah 因为一个单元(一个字节)表示两个 十进制的数,所以分开
    mov cl,4
    shr ah,cl ;将ah的前4个2进制数 清零
    and al,00001111b ;将al的前4个二进制 清零
   
    add ah,30h ;显示数 = BCD码 + 30H
    add al,30h
   
    mov es:[di],ah    ;显示十位
    mov es:[di+2],al ;显示个位
    mov bl,45        ;显示 -
    mov es:[di+4],bl ;显示 -
    add di,6
    pop cx
    pop ax
  
    dec al
    loop s
   
    mov al,4   ;COMS时钟存储的第4个单元开始
    mov cx,3
   s1:
    push ax
    push cx
   
    out 70H,al ;70H端口(地址端口)写入al
    in al,71H   ;读取71H端口(数据端口)的数据到al
   
    mov ah,al
    mov cl,4
    shr ah,cl
    and al,00001111b
   
    add ah,30h
    add al,30h
   
    mov es:[di],ah ;显示 十位
    mov es:[di+2],al ;显示个位
    mov bl,58         ;显示 :
    mov es:[di+4],bl
    add di,6
    pop cx
    pop ax
  
    sub al,2   ; 4 2 0
    loop s1
   
    mov ax,4c00h
    int 21h
code ends
end start
assume cs:code
;获取当前的年 月 日 时 分 秒
code segment
start:
    mov ax,0b800H
    mov es,ax
    mov di,12*120 ;显示
   
    mov al,9   ;COMS时钟存储的第九个单元(0 2 4 7 8 9)
    mov cx,3   ;循环3次 9 8 7 年月日
   s:
    push ax
     push cx ;入栈 因为后面会用到
        
    out 70H,al ;70H(地址端口)写入 al 单元
    in al,71H ;读取71H(数据端口)的数据到 al
   
    mov ah,al;将al的值赋给ah 因为一个单元(一个字节)表示两个 十进制的数,所以分开
    mov cl,4
    shr ah,cl ;将ah的前4个2进制数 清零
    and al,00001111b ;将al的前4个二进制 清零
   
    add ah,30h ;显示数 = BCD码 + 30H
    add al,30h
   
    mov es:[di],ah    ;显示十位
    mov es:[di+2],al ;显示个位
    mov bl,45        ;显示 -
    mov es:[di+4],bl ;显示 -
    add di,6
    pop cx
    pop ax
  
    dec al
    loop s
   
    mov al,4   ;COMS时钟存储的第4个单元开始
    mov cx,3
   s1:
    push ax
    push cx
   
    out 70H,al ;70H端口(地址端口)写入al
    in al,71H   ;读取71H端口(数据端口)的数据到al
   
    mov ah,al
    mov cl,4
    shr ah,cl
    and al,00001111b
   
    add ah,30h
    add al,30h
   
    mov es:[di],ah ;显示 十位
    mov es:[di+2],al ;显示个位
    mov bl,58         ;显示 :
 
   mov es:[di+4],bl
    add di,6
    pop cx
    pop ax
  
    sub al,2   ; 4 2 0
    loop s1
   
    mov ax,4c00h
    int 21h
code ends
end start

Copyright © 2024 ddos
Powered by .NET 8.0 on Kubernetes