鱼C论坛

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

[作品展示] 16位汇编读取CMOS时间日期的学习总结程序

[复制链接]
发表于 2013-1-23 14:07:38 | 显示全部楼层 |阅读模式

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

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

x
最近随手写的练习程序,给大家分享下,多谢大家的支持啊!
  1. ;******************************************
  2. ;        程序功能:读取CMOS时间并显示
  3. ;        CMOS读写方法如下:
  4. ;        1.向地址端口70H写入要访问的单元地址
  5. ;        2.从71H端口读出数据
  6. ;        注意:CMOS中存放的是BCD码
  7. ;        数码:         0         1    2    3    4
  8. ;        BCD码:0000 0001 0010 0011 0100
  9. ;        数码:         5         6    7    8    9
  10. ;        BCD码:0101 0110 0111 1000 1001
  11. ;        CMOS RAM中时间格式如下:
  12. ;        秒:00H
  13. ;        分:02H
  14. ;        时:04H
  15. ;        日:07H
  16. ;        月:08H
  17. ;        年:09H
  18. ;        BCD码转ASCII码:BCD + 30H = ASCII
  19. ;******************************************
  20. assume cs:code,ds:data,ss:stack

  21. stack segment
  22.         db 16 dup(0)
  23. stack ends

  24. data segment
  25. ;格式: 年            月            日            时      分      秒
  26.         db 0,0,'-',0,0,'-',0,0,' ',0,0,':',0,0,':',0,0,'运行效果图如下:
  27. ;CMOS端口号序列        
  28.         db 09h,08h,07h,04h,02h,00h
  29. data ends

  30. code segment
  31. start:        mov ax,stack        ;栈段初始化
  32.                 mov ss,ax
  33.                 mov sp,10h
  34.                
  35.                 mov ax,data                ;数据段初始化
  36.                 mov ds,ax
  37.                
  38.                 ;数据段偏移量如下:               
  39.                 ;         L        H
  40.                 ;年:0,        1
  41.                 ;月:3,        4
  42.                 ;日:6,        7
  43.                 ;时:9,        10
  44.                 ;分:12,13
  45.                 ;秒:15,16
  46.                 ;L->si        H->di               
  47.                 mov si,0
  48.                 mov di,1
  49.                 xor bx,bx
  50.                 mov bx,18
  51.                 mov cx,6
  52.         s:        mov al,ds:[bx]
  53.                 out 70h,al
  54.                 in al,71h
  55.                 mov ah,al
  56.                 push cx
  57.                 mov cl,4
  58.                 shr ah,cl
  59.                 pop cx
  60.                 and al,00001111b
  61.                 add ah,30h
  62.                 add al,30h
  63.                 mov byte ptr ds:[si],ah
  64.                 mov byte ptr ds:[di],al
  65.                 inc bx
  66.                 add si,3
  67.                 add di,3
  68.                 loop s
  69.                
  70.                 mov dx,offset ds:[0]        ;设置字符串首地址
  71.                 call show
  72.                
  73.                 mov ah,4ch                ;返回OS
  74.                 mov al,0h                ;返回值:0
  75.                 int 21h
  76. ;*********************
  77. ;        子程序:显示字符
  78. ;        入口参数:DS:DX=串首址
  79. ;        返回值:无
  80. ;*********************
  81. show:        push ax
  82.                 mov ah,09h
  83.                 int 21h
  84.                 pop ax
  85.                 ret
  86. code ends
  87. end start
复制代码

运行效果图如下:

运行结果

运行结果


小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-1-23 19:00:19 | 显示全部楼层
不错哦!学习中!做个沙发先!:P
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-5-12 01:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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