汇编网首页登录博客注册
zhengcong3250的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
  •  何以解忧愁,唯有杜康酒!
  • 『姓名』:
  • 『性别』:男『发送消息
  • 个人说明:http://student.zjzk.cn/course_ware/data_structure/web/shu/shu6.3.2.htm
  • 详细信息『加为好友』
学习动态

[2010-07-14 09:41] 第十四章 实验14

;编程,以“年/月/日 时:分:秒“的格式,显示当前的日期、时间。

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
评论次数(0)  |  浏览次数(1142)  |  类型(汇编作业) |  收藏此文  | 
 
 请输入验证码  (提示:点击验证码输入框,以获取验证码