鱼C论坛

 找回密码
 立即注册
查看: 2036|回复: 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 | 显示全部楼层
  1. ;实验14:编程,以“年/月/日 时:分:秒” 的格式,显示当前日期、时间
  2. assume cs:code

  3. code segment
  4. start:
  5.                 mov ax,0b800h
  6.                 mov ds,ax
  7.                 mov di,12*160+80-18                ;设置显示位置
  8.                 mov dh,2                                ;设置显示属性
  9.                
  10.                 mov al,9
  11.                 mov bl,'/'
  12.                 call readTime
  13.                
  14.                 mov al,8
  15.                 mov bl,'/'
  16.                 call readTime
  17.                
  18.                 mov al,7
  19.                 mov bl,' '
  20.                 call readTime
  21.                
  22.                 mov al,4
  23.                 mov bl,':'
  24.                 call readTime
  25.                
  26.                 mov al,2
  27.                 mov bl,':'
  28.                 call readTime
  29.                
  30.                 mov al,0
  31.                 mov bl,0
  32.                 call readTime
  33.                
  34.                 mov ax,4c00h
  35.                 int 21h
  36.                
  37. showTime:;显示数据,dl为要显示的字符;dh为显示的属性
  38.                 mov [di],dx
  39.                 add di,2
  40. ret

  41. ;参数(al:端口号;bl:附加符号) 功能:读取CMOS RAM的端口(al)的信息,并显示到屏幕上
  42. readTime:
  43.                 ;读取CMOS RAM的端口(al)的信息
  44.                 out 70h,al
  45.                 in al,71h
  46.                
  47.                 ;获取高4位二进制信息
  48.                 mov ah,al
  49.                 mov cl,4
  50.                 shr ah,cl
  51.                
  52.                 ;获取低4位二进制信息
  53.                 and al,00001111b
  54.                
  55.                 ;转换为ASCII码
  56.                 add ah,30h
  57.                 add al,30h
  58.                
  59.                 mov dl,ah
  60.                 call showTime
  61.                
  62.                 mov dl,al
  63.                 call showTime
  64.                
  65.                 mov dl,bl
  66.                 call showTime
  67. ret
  68. code ends
  69. end start
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-24 22:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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