| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1104 人关注过本帖
标题:请帮忙解决"取系统时间"问题
只看楼主 加入收藏
Karl168
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2007-9-23
收藏
 问题点数:0 回复次数:1 
请帮忙解决"取系统时间"问题
用汇编取系统时间却发现取出来的时间不对,自己调试了很久却找不到问题的原因.请大侠们帮忙解决呀!另外采用DOS 中断2AH,日期存放于DL中,教科书上说DL中的值为01-31,请问这01-31是以16进制存放的还是以10进制存放的,比如说今天是14号,DL中的值会是'14'还是'0E'.
code segment
  assume cs:code
start:
  mov ah,2ah ;2ch号功能调用,取系统时间:ch,cl,dh中分别存放时分秒
  int 21h
  call disptime;调用disptime子程序显示时间
exit:
  mov ax,4c00h ;结束程序,返回DOS
  int 21h

;====================================================================

disptime proc    ;disptime子程序显示时间
  
  mov ax,cx
  call bindec1

  push dx  

  mov dl,'-'     ;显示":"
  mov ah,02h
  int 21h

  pop dx

  mov al,dh      ;分
  cbw             ;符号扩展
  call bindec
  
  push dx

  mov dl,'-'     ;显示":"
  mov ah,02h
  int 21h

  pop dx

  mov al,dl      ;分
  cbw
  call bindec
  
  ret
disptime endp

;================================================================================

bindec proc      
  push ax        ;保存寄存器的值
  push cx
  push dx
  
  mov dx,0        ;被除数高16位置0    Dx:ax
  mov cx,10d     ;除数为10d
  div cx         
  mov bx,dx        ;先保存余数
  mov dl,ah        ;显示商(即十进制二位数的十位)
  
  or dl,30h       ;转换成Ascii码
  mov ah,02h       ;2号功能调用,显示字符(十位)
  int 21h
  
  mov dx,bx        ;恢复余数的值(十进制二位数的个位)
  add dl,30h        ;转换成ASCII码
  mov ah,02h        ;2号功能调用,显示字符(个位)
  int 21h
  
  pop dx           ;恢复寄存器的值
  pop cx
  pop ax
  ret             ;子程序返回   
  bindec endp

bindec1 proc      
  push ax        ;保存寄存器的值
  push cx
  push dx
  
  mov dx,0        ;被除数高16位置0    Dx:ax
  mov cx,10d     ;除数为10d
  div cx         
  push dx        ;先保存余数

  mov dx,0        ;被除数高16位置0    Dx:ax
  mov cx,10d     ;除数为10d
  div cx         
  push dx        ;先保存余数

  mov dx,0        ;被除数高16位置0    Dx:ax
  mov cx,10d     ;除数为10d
  div cx         
  push dx        ;先保存余数  

  mov dl,al        ;显示商(即十进制二位数的十位)
  
  or dl,30h       ;转换成Ascii码
  mov ah,02h       ;2号功能调用,显示字符(十位)
  int 21h
  
  pop dx
  add dl,30h        ;转换成ASCII码
  mov ah,02h        ;2号功能调用,显示字符(个位)
  int 21h

  pop dx
  add dl,30h        ;转换成ASCII码
  mov ah,02h        ;2号功能调用,显示字符(个位)
  int 21h

  pop dx
  add dl,30h        ;转换成ASCII码
  mov ah,02h        ;2号功能调用,显示字符(个位)
  int 21h
  
  pop dx           ;恢复寄存器的值
  pop cx
  pop ax
  ret             ;子程序返回   
  bindec1 endp

code ends
  end start
搜索更多相关主题的帖子: 系统时间 int 进制 DOS 
2008-02-14 08:59
Karl168
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2007-9-23
收藏
得分:0 
怎么没人回应啊?5555555
2008-02-16 09:19
快速回复:请帮忙解决"取系统时间"问题
数据加载中...
 
   



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

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