⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1111.asm

📁 汇编masm的时钟程序
💻 ASM
📖 第 1 页 / 共 2 页
字号:
data segment
    m2      DB  '0'              ;分的十位
     m1       DB  '0'                ;分的个位
              DB  ':'                ;间隔
     s2       DB  '0'                ;秒的十位
     s1       DB  '0'                ;秒的个位 
              DB  ':'                ;间隔
     ms2      DB  '0'                ;百分秒位
     ms1      DB  '0'                ;十分秒位
     ROW      DB   0                 ;行数
    
data ends
STACK  SEGMENT
       DW 16 DUP(0)
STACK  ENDS 
code segment
 assume  cs:code,ds:data,SS:STACK
start:
      call clall2              ;调用清全屏
 ag:  call clear               ;调用清显示部分屏幕
      call list                ;调用显示
      call second              ;调用一秒延时
      MOV      AH,0BH          ;检测有键按下否?
      INT      21H
      CMP      AL,00H          ;AL=0,无键按下
      JZ       ag              ;无键按下,转ag
      MOV      AH,08H          ;有键,读键值AL
      INT      21H
      cmp      al,'n'
      jnz      end1
 nao: call dingshi              ;调用定时子程序
      jmp ag
      
end1: cmp   al,'s'
       jnz  g1
      call  far ptr mb
       jmp  ag
   g1:    cmp         al,1bh
      jnz            ag
   mov ah,4ch
   int 21h
;--------------------------------------------------日期
list proc near

           push ax
           push bx
           push cx
           push dx

       mov ah,2ah
    int 21h                  ;系统功能调用,读系统日期
       push dx                   ;将DX入栈
       mov dl,0
again1:    sub cx,03e8h           ;CX保存年,将CX-1000
           js  next1              ;CX为负跳next1
           inc dl                 ;否则DL+1
           jmp again1             ;跳至CX-1000
next1:     add cx,03e8h           ;CX+1000送CX
           add dl,30h  
           mov ah,02h  
           int 21h                ;显示DL,即CX的千位
           mov dl,0               ;DL清零
again2:    sub cx,0064h           ;将CX-100
           js  next2
           inc dl
           jmp again2
next2:     add cx,0064h
           add dl,30h
           mov ah,02h
           int 21h                ;显示DL,即CX的百位
           mov dl,0
 again3:   sub cx,000ah           ;将CX-10
           js  next3
           inc dl
           jmp again3   
next3:     add cx,000ah
           add dl,30h
           mov ah,02h
           int 21h                ;显示DL,即DX的十位
           add cl,30h
           mov dl,cl
           mov ah,02h
           int 21h                ;显示CL的个位
           mov dl,'-'
           mov ah,02h
           int 21h                 ;显示“-”
                    
           pop dx                  ;弹出DX
           mov bl,dl               ;将DL送BL
           mov dl,0                ;将DL清零
again4:    sub dh,000ah            ;DH存月,将DH-10
           js  next4
           inc dl
           jmp again4   
next4:      add dh,000ah
            
            add dl,30h
            mov ah,02h
            int 21h                ;显示DH的十位,即月的十位
            add dh,30h
            mov dl,dh
            mov ah,02h
            int 21h                  ;显示DH的个位
            mov dl,'-'
            mov ah,02h
            int 21h
            mov dl,0
again5:     sub bl,000ah             ;DL存天
            js  next5
            inc dl
            jmp again5   
next5:      add bl,000ah
            add dl,30h
            mov ah,02h
            int 21h  
            add bl,30h
            mov dl,bl
            mov ah,02h
            int 21h
            mov dl,' '            ;显示空格
            mov ah,02h
            int 21h
;--------------------------------------时间
                  mov ah,2ch      ;系统功能调用,读系统时间
                  int 21h
                  push dx
                  mov dl,0
a1:        sub ch,000ah           ;CH存小时
           js  n1
           inc dl
           jmp a1   
n1:        add ch,000ah
           
           add dl,30h
           mov ah,02h
           int 21h 
           
           add ch,30h
           mov dl,ch
                    
           mov ah,02h
           int 21h
          
           
           mov dl,':'
           mov ah,02h
           int 21h                 ;显示“:”
           mov dl,0
a2:       sub cl,000ah             ;CL存分钟
          js  n2
          inc dl
          jmp a2   
n2:       add cl,000ah
         
           add dl,30h
           mov ah,02h
           int 21h
           
           add cl,30h
           mov dl,cl
           mov ah,02h
           int 21h
           mov dl,':'            ;显示“:”
           mov ah,02h
           int 21h
           
           pop dx
           mov dl,0
           
a3:       sub dh,000ah           ;DH存秒
            js  n3
            inc dl
           jmp a3   
n3:        add dh,000ah
           add dl,30h
           mov ah,02h
           int 21h  
           add dh,30h
           mov dl,dh
           mov ah,02h
           int 21h

          pop dx
                   pop cx
                    pop bx
                   pop ax
           
 ret
list endp  
;------------------------------------定时程序
dingshi proc near
       push ax
       push bx
       push cx
       push dx
    call clear               ;调用清显示部分屏幕
    mov dl, 'i'
        mov ah,02h
        int 21h
     mov dl, 'n'
     mov ah,02h
     int 21h

 mov ax,data
 mov dx,ax
 
 mov ah,01h
 int 21h
    sub al,30h
 mov bh,al
 mov ah,01h
 int 21h
    sub al,30h
 mov bl,al
 mov dl,':'
 mov ah,02h
 int 21h
 mov ah,01h
 int 21h
     sub al,30h
 mov dh,al
 mov ah,01h
 int 21h
    sub al,30h
 mov dl,al                              ;存输入数据,BHBL:DHDL
 push dx
 
;----------------------------------------小时的十位的判断
shi10:           mov ah,2ch
             int 21h
                mov dl,0
dao1:          sub ch,0ah
               js  dao2
               inc dl
               jmp dao1
dao2:       
                      
           cmp bh,dl                            ;判断小时的十位
           jnz shi10
;-----------------------------------------小时的个位的判断 
 shi:            mov ah,2ch
            int 21h
               mov dl,0
 dao3:         sub ch,0ah
               js  dao4
                
               jmp dao3 
dao4:       add ch,0ah
            cmp ch,bl                              ;判断小时的个位
            jnz shi

            
;--------------------------------------------分钟的十位的判断
                    
fen10:  mov ah,2ch
    int 21h
              
        mov dl,0
dao5:    sub cl,0ah
        js  dao6
        inc dl   
        jmp dao5   
dao6:   mov bl,dl                             ;将DL中的分的十位送BL
      
        pop dx                                  ;将输入的DH,DL弹出
        cmp bl,dh                             ;判断分的十位
        push dx
        jnz fen10
;--------------------------------------------------分钟的个位判断      
fen:            mov ah,2ch
            int 21h
                mov dl,0
dao7:           sub cl,0ah
                js  dao8
                    
               jmp dao7   
dao8:       add cl,0ah
            pop dx

            cmp cl,dl                              ;判断分的个位
            push dx
            jnz fen
pop dx
mov dl,'s'
mov ah,02h
int 21h
mov dl,'t'
mov ah,02h
int 21h
mov dl,'o'
mov ah,02h
int 21h
mov dl,'p'
mov ah,02h
int 21h                  ;定时结束,显示STOP
pop dx
pop cx
pop bx
pop ax
ret   
dingshi endp       
;-------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -