【汇编语言】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

运行结果:

猜你喜欢

转载自blog.csdn.net/Amentos/article/details/127335651