实验十四_访问CMOS RAM

编程:以“年/月/日 时:分:秒”的格式,显示当前的日期,时间。
注意:CMOS RAM中存储着系统的配置信息,除了保存时间信息的单元外,不要向其他的单元写入内容,否则将引起一些系统错误。
assume cs:code,ds:data 
data segment 
  db '00/00/00/ 00:00:00','$' 
data ends 
code segment 
  index_cmostime:db 9,8,7,4,2,0;存储cmos ram中存放时间信息的单元编号。 
  index_datatime:db 0,3,6,10,13,16;data数据段中每个时间信息的偏移地址编号。 
start:         
        mov ax,data 
        mov ds,ax 
         
        mov di,offset index_cmostime 
        mov bx,offset index_datatime 
         
        mov cx,6 
s:      push cx 
        mov al,cs:[di] 
         
        out 70h,al 
        in al,71h 
         
        mov ah,al 
        mov cl,4 
        shr ah,cl 
        and al,00001111b 
        add ah,30h 
        add al,30h 
         
        mov cl,cs:[bx] 
        mov ch,0 
        mov bp,cx 
        mov ds:[bp],ah 
        mov ds:[bp+1],al 
         
        inc di 
        inc bx 
        pop cx 
        loop s 
         
        mov ah,2        ;置光标 
        mov bh,0        ;第0页 
        mov dh,13        ;dh中放行号 
        mov dl,30        ;dl中放列号 
        int 10h 
         
        mov ax,data 
        mov ds,ax 
        mov dx,0        ;设置ds:dx指向字符串的首地址 
        mov ah,9 
        int 21h 
         
        mov ax,4c00h 
        int 21h 
code ends 
end start 
思路:数据段:
        步骤1、定义数据段,用途:将从端口读出的数据转化为字符存储在数据段
      代码段:
        步骤1、定义数据,将要访问的内存单元编号存入(为防止重复性操作,思路类似于实验十三的英文诗)
               2、从端口读出相应的数据(以BCD码的方式存放)
               3、数据转化为ascii值存入数据段
               4、调用BIOS、DOS中断例程显示字符(当然也可以自己编写函数实现)
原文地址:https://www.cnblogs.com/xpjiang/p/4524430.html