【汇编语言】by王爽 | 实验14:访问CMOS RAM

前言:本实验为王爽老师的《汇编语言》第三版中的实验14(p271)

实验环境:DOSBox 0.74-3

实验任务:

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

        注意:CMOS RAM 中存储着系统的配置信息,除了保存时间信息的单元外,不要向其它的单元中写入内容,否则将引起一些系统错误。

程序代码:

assume cs:code

data segment
  db 9,'/',8,'/',7,32,4,':',2,':',0,32  ;空格的ASCII码32
data ends

code segment
start: mov ax,data
       mov ds,ax
       mov si,0  ;ds:si指向相关数据

       mov ax,0b800h
       mov es,ax
       mov di,10*160+40  ;es:di指向日期显示的地址

       mov cx,6
    s: push cx  ;保存cx原始数据

       mov al,[si]  ;存放日期的单元
       out 70h,al  ;将时间对应的单元写入地址端口
       in al,71h  ;从数据端口读出时间数据,保存在al中

       ;转换bcd码
       mov ah,al
       mov cl,4
       shr ah,cl
       and al,00001111b 
       add ah,30h
       add al,30h

       mov es:[di],ah  ;ah存储相应时间的十位
       mov es:[di+2],al  ;al存储相应时间的个位
       mov al,[si+1]  ;ds:[si+1]指向时间后的字符
       mov es:[di+4],al
       mov ch,00000010b  ;设置样式
       mov es:[di+1],ch
       mov es:[di+3],ch
       mov es:[di+5],ch

       add si,2  ;si指向下一个时间位
       add di,6

       pop cx
       loop s
       
       mov ax,4c00h
       int 21h

code ends
end start

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值