| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 596 人关注过本帖
标题:汇编语言(数字钟问题)
只看楼主 加入收藏
z2362499
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-3-27
结帖率:0
收藏
 问题点数:0 回复次数:0 
汇编语言(数字钟问题)
麻烦大家改下这程序 实现数字时钟“00:00:00”
   2)增加开始和暂停
;用1CH定时中段的方式实现每秒一个,显示10个字符串
       D_SEG  SEGMENT               ;数据段
         MSG  DB        "00:00:00 ",'$'
 OLD_INT_SEG  DW        0           ;存储1ch中断入口的段地址
 OLD_INT_OFF  DW        0           ;存储1ch中断入口的偏移地址
       COUNT  DB        0           ;次数,全局变量,在主程序和
                    ; 中断子程序间通信
      COUNT1  DB        0           ;18次为1秒
       D_SEG  ENDS
       S_SEG  SEGMENT   STACK       ;堆栈段
              DB        250 DUP(0)
       S_SEG  ENDS
       C_SEG  SEGMENT               ;代码段
              ASSUME    CS:C_SEG,DS:D_SEG,SS:S_SEG
        MAIN  PROC      FAR         ;主程序开始
              MOV       AX,D_SEG
              MOV       DS,AX       ;数据段初始化
              CALL      INIT_INT    ;初始化中断
         L1:  CMP       COUNT,10    ;50次
              JNE       L1
              CALL      RESTORE_INT ;恢复原1ch中断入口
      EXIT1:  MOV       AX,4C00H    ;退出,回到DOS
              INT       21H
        MAIN  ENDP                  ;主程序结束

    INIT_INT  PROC      NEAR        ;初始化中断子程序开始
              CLI
              PUSH      DS          ;保存DS,因程序中修改了它
              MOV       AL,1CH
              MOV       AH,35H
              INT       21H
              MOV       OLD_INT_OFF,BX          ;保存原1ch的偏移地址
              MOV       OLD_INT_SEG,ES          ;保存原1ch的段地址
              MOV       AX,SEG DISP ;安装新中断程序入口地址
              MOV       DS,AX
              MOV       DX,OFFSET DISP
              MOV       AH,25H
              MOV       AL,1CH
              INT       21H
              POP       DS          ;恢复DS
              STI
              RET
    INIT_INT  ENDP                  ;初始化中断子程序结束
 RESTORE_INT  PROC      NEAR        ;恢复原中断子程序开始
              CLI
              MOV       DX,OLD_INT_OFF
              MOV       AX,OLD_INT_SEG
              MOV       DS,AX
              MOV       AH,25H
              MOV       AL,1CH
              INT       21H
              STI
              RET
 RESTORE_INT  ENDP                  ;恢复原中断子程序结束
        DISP  PROC      NEAR        ;新的1ch中段程序开始
              CLI
              MOV       AX,D_SEG    ;为确保访问到字符串,重新指定DS
              MOV       DS,AX
              MOV       DX,OFFSET MSG
              MOV       AH,9H       ;显示字符串
              INC       COUNT1
              CMP       COUNT1,18
              JNE       LESSTHEN1SEC
              INC       COUNT
              MOV       COUNT1,0
              INT       21H
           LESSTHEN1SEC:  STI
              IRET
        DISP  ENDP                  ;新的1ch中段程序结束
       C_SEG  ENDS                  ;代码段结束
              END       MAIN        ;程序结束
搜索更多相关主题的帖子: 钟问题 汇编语言 数字 
2010-11-09 18:34
快速回复:汇编语言(数字钟问题)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028957 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved