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

📄 clock!.asm

📁 用汇编语言编写的程序
💻 ASM
字号:
 code   segment   
      org   100h   
      assume   cs:code   ,   ds:code   
  main:   
    jmp   start;要跳开数据部分,不能执行   
    welcome   db   '+---------------------------------------------------+'   ,0ah   ,0dh   
      db   '+           This   is   a   clock                                                               +'   ,0ah   ,0dh   
      db   '+                                                           ---write   by   Future   Yao+'   ,0ah   ,0dh   
      db   '+---------------------------------------------------+'   ,0ah   ,0dh   ,'$'   
    old_int   dd   ?   
    
  start:     
    mov   dx,seg   welcome   
    mov   ds,dx   
    mov   dx   ,offset   welcome   
    mov   ah   ,09h   
    int   21h   
      
      
    mov   ax   ,351Ch   
    int   21h;读取中断向量   
    
    mov   word   ptr   old_int   ,   bx   
    mov   word   ptr   old_int[2]   ,   es   
      
    mov   dx   ,   offset   TSR   
    push   cs   
    pop   ds   
      
    mov   ax   ,   251Ch   
    int   21h   
    
    mov   dx   ,   offset   main   
    int   27h   
      
  TSR   proc   far   
    ;保护现场   
    push   ax   
    push   bx   
    push   cx   
    push   dx   
    push   si   
    push   di   
    push   bp   
    push   sp   
    push   es   
    push   ds   
    sti   
    call   disp   
    cli   
    ;返回现场   
    pop   ds   
    pop   es   
    pop   sp   
    pop   bp   
    pop   di   
    pop   si   
    pop   dx   
    pop   cx   
    pop   bx   
    pop   ax   
      
    jmp   cs:old_int   
  TSR   endp   
  disp   proc   near   
    push   ax   
    push   cx   
    push   dx   
    push   es   
    push   bx   
      
    ;进行初始化   
    mov   ax,0b800h   
    mov   es,ax   
    ;获得时间   
    mov   ah,   02h   
    int   1ah   
    mov   ax,   0eh   
      
    ;显示小时的高位   
    mov   bh,ch   
    shr   bh,1   
    shr   bh,1   
    shr   bh,1   
    shr   bh,1   
    add   bh,30h   
    mov   es:0090h,bh   
    mov   es:0091h,ax   
    ;显示小时的低位   
    and   ch,0fh   
    add   ch,30h   
    mov   es:0092h,ch   
    mov   es:0093h,ax   
      
    ;显示分隔符号:   
    mov   byte   ptr   es:0094h,':'   
    mov   es:0095h,ax   
      
    ;显示分钟的高位   
    mov   bh,cl   
    shr   bh,1   
    shr   bh,1   
    shr   bh,1   
    shr   bh,1   
    add   bh,30h   
    mov   es:0096h,bh   
    mov   es:0097h,ax   
    ;显示分钟的低位   
    and   cl,0fh   
    add   cl,30h   
    mov   es:0098h,cl   
    mov   es:0099h,ax   
      
    ;显示分隔符号:   
    mov   byte   ptr   es:009ah,':'   
    mov   es:009bh,ax   
    
    ;显示秒的高位   
    mov   bh,dh   
    shr   bh,1   
    shr   bh,1   
    shr   bh,1   
    shr   bh,1   
    add   bh,30h   
    mov   es:009ch,bh   
    mov   es:009dh,ax   
    ;显示秒的低位   
    and   dh,0fh   
    add   dh,30h   
    mov   es:009eh,dh   
    mov   es:009fh,al   
      
    pop   bx   
    pop   es   
    pop   dx   
    pop   cx   
    pop   ax   
    ret   
    
  disp   endp   
    
  code   ends   
      end   main   

⌨️ 快捷键说明

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