鱼C论坛

 找回密码
 立即注册
查看: 2140|回复: 1

[技术交流] 唉!算是把《实验14》这一题的差事给糊过去了。

[复制链接]
发表于 2012-2-14 19:41:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
;实验14
;编程:在屏幕中间显示当前的/年/月/日/时/秒

assume cs:code,ds:data
data segment
     db 9,8,7,4,2,0
     db 'yy/mm/dd hh:mm:ss','$'
data ends

code segment
start:  mov ax,data
          mov ds,ax
          mov si,0
          mov di,6
  
         mov cx,6
      s:push cx
         mov al,[si]
         out 70h,al                       ;将al送入地址端口70h
         in al,71h                          ;从数据端口71h处读出单元内容
         mov ah,al
         mov cl,4
         shr al,cl                            ;右移4位
         and ah,00001111b          ;al分成两个表示BCD码值的数据
         add ah,30h
         add al,30h                       ;BCD码+30h=10进制数对应的ASCII码
         mov ds:[di],ax                 ;ASCII码写入ds:[di]
  
         inc si
         add di,3
         pop cx
         loop s
  
;名称:BIOS中断(int 10h)
;功能:(ah)=2置光标到屏幕指定位置、(ah)=9在光标位置显示字符
;参数:(al)=字符、(bh)=页数、(dh)=行号、(dl)=例号,(bl)=颜色属性、(cx)=字符重复个数  
         mov ah,2                          ;置光标
         mov bh,0                          ;第0页
         mov dh,12                        ;dh中放行号
         mov dl,30                         ;dl中放列号
         int 10h
  
;名称:DOS中断(int 21h)
;功能:(ah)=9显示用'$'结束的字符串、(ah)=4ch程序返回
;参数:ds:dx指向字符串、(al)=返回值
        mov ax,data
        mov ds,ax
        mov dx,6                          ;ds:dx指向字符串的首地址data:0
        mov ah,9
        int 21h

       mov ax,4c00h
        int 21h
      
code ends
end start


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-8-5 00:30:29 | 显示全部楼层
;实验14:编程,以“年/月/日 时:分:秒” 的格式,显示当前日期、时间
assume cs:code

code segment
start:
                mov ax,0b800h
                mov ds,ax
                mov di,12*160+80-18                ;设置显示位置
                mov dh,2                                ;设置显示属性
                
                mov al,9
                mov bl,'/'
                call readTime
                
                mov al,8
                mov bl,'/'
                call readTime
                
                mov al,7
                mov bl,' '
                call readTime
                
                mov al,4
                mov bl,':'
                call readTime
                
                mov al,2
                mov bl,':'
                call readTime
                
                mov al,0
                mov bl,0
                call readTime
                
                mov ax,4c00h
                int 21h
                
showTime:;显示数据,dl为要显示的字符;dh为显示的属性
                mov [di],dx
                add di,2
ret

;参数(al:端口号;bl:附加符号) 功能:读取CMOS RAM的端口(al)的信息,并显示到屏幕上
readTime:
                ;读取CMOS RAM的端口(al)的信息
                out 70h,al
                in al,71h
                
                ;获取高4位二进制信息
                mov ah,al
                mov cl,4
                shr ah,cl
                
                ;获取低4位二进制信息
                and al,00001111b
                
                ;转换为ASCII码
                add ah,30h
                add al,30h
                
                mov dl,ah
                call showTime
                
                mov dl,al
                call showTime
                
                mov dl,bl
                call showTime
ret
code ends
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-20 13:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表