. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->端口
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  实验14  [已解决] 回复[ 2次 ]   点击[ 967次 ]  
zhengcong3250
[帖 主]   [ 发表时间:2010-07-14 09:56 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:10
注册日期:2010-06-09 16:22
;编程,以“年/月/日 时:分:秒“的格式,显示当前的日期、时间。

data segment
    s        db 9,8,7,4,2,0
data ends
stack segment  stack
        db 10h dup (?)
stack ends
assume cs:code 
assume ds:data
code segment
start: mov ax,data
       mov ds,ax
       mov ax,0b800h
       mov es,ax
       mov bx,160*12+35*2   ;定位显存12行35列
       mov si,0
       mov dl,'/'           ;年月日分割符
       mov cx,6              ;循环6次
   s1: push cx                ;cx入栈,保护
       mov al,s[si]           ;从数据段取要访问的单元号
       out 70h,al
       in  al,71h             ;从端口读取相应单元数据到al
       mov ah,al               
       mov cl,4
       shr ah,cl              ;分解al中BCD码为十位数码值和个位数码值
       and al,00001111b
       add ah,30h
       add al,30h              ;转换成ASCLL字符码
       
       mov es:[bx],ah           ;显示十位数码
       mov es:[bx+2],al         ;显示个位数码
       mov es:[bx+4],dl         ;显示分隔符
       
       pop cx                   ;出栈
       cmp cx,5                  ;在第二次循环结束以前改变分隔符为空格
       je  change               ;以便第三次显示年月日和时分秒的分隔符
       jb  change1               ;两次以上则分隔符为:
       
    s2:inc si
       add bx,6
       
       loop s1
       mov ax,4c00h
       int 21h
change:mov dl,20h         ;改年月日和十分秒的分隔
       jmp short s2       ;转至loop内继续
change1:cmp cx,2            ;第5次循环结束以前改分隔符为空格,因结尾不需要分隔
        je  s3               ;检测是否第5次循环,是则转s3   
        mov dl,':'           ;不是第5次显示分隔符:    
        jmp short s2
     s3:mov dl,' '           ;改分隔符为空格
        jmp short s2         
code ends            
end  start             
       
        
俺的程序是不是有点复杂了,看论坛上有好多短的,高手们看下怎么才能不间断刷新呢?
masmaster
[第1楼]   [ 回复时间:2010-07-25 15:42 ]   [引用]   [回复]   [ top ] 
荣誉值:268
信誉值:12
注册日期:2010-06-18 22:19
用书里的delay程序
zhengcong3250
[第2楼]   [ 回复时间:2010-07-27 11:28 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:10
注册日期:2010-06-09 16:22
此贴由 贴主 于 [ 2010-07-27 11:28 ] 结贴。 结贴原因:问题已解决
得分情况: 1楼(masmaster):2分  
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved