• 汇编试验十四:访问CMOS RAM


    CMOS RAM 芯片的特征:

    • 包含一个时钟和一个有128个存储单元的RAM存储器。
    • 该芯片靠电池供电。所以,关机后其内部的时钟仍可正常工作,RAM中的信息不丢失。
    • 128个字节的RAM中,内部时钟占用 0~0dh  单元来保存时间信息,其余大部分单元用于保存系统配置信息,供系统启动时BIOS程序读取。
    • 该芯片内部有两个端口,端口地址为 70h 和 71h 。CPU 通过这两个端口来读写CMOS RAM。
    • 70h 为地址端口存放要访问的 CMOS RAM 单元的地址; 71h  为数据端口,存放从选定的 CMOS RAM 单元中读取的数据,或要写入到其中的数据。
    • 在CMOS RAM 中,存放着当前的时间:年、月、日、时、分、秒。这6个信息的长度都为1个字节,存放单元:且这些数据以 BCD 码的方式存放。

    试验效果:

    Source Code:

    assume cs:code
    
    code segment
    start:    mov ax,0b800h
            mov es,ax
            mov di,160*12+30*2
            mov al,0ah
    
            push di
    
    rdata:    dec al
            cmp al,7
            jb rtime
            call show
            add di,6
            jmp short rdata
    
    rtime:    sub al,2
            cmp al,0feh
            je    sign
            call show
            add di,6
            jmp short rtime
    
    sign:    pop di
            add di,4
            mov byte ptr es:[di],'/'
    
            add di,6
            mov byte ptr es:[di],'/'
    
            add di,12
            mov byte ptr es:[di],':'
    
            add di,6
            mov byte ptr es:[di],':'
    
            mov ax,4c00h
            int 21h
    
    
    show:    push ax
            push cx
    
            out 70h,al
            in al,71h
    
            mov cx,4
            mov ah,al
            shr ah,cl
            and al,0fh
    
            add ah,30h
            add al,30h
    
            mov es:[di],ah
            mov es:[di+2],al
    
            pop cx
            pop ax
            ret
    code ends
    end start
    View Code
  • 相关阅读:
    项目ITP(五) spring4.0 整合 Quartz 实现任务调度
    [Git 系列] WIN7下Git的安装
    Candy
    OSGI
    JAVA编程思想(1)
    [python] 字典和列表中的pop()函数
    R语言编程语法
    Linux 之创建工作目录-mkdir
    python 之 改变工作目录
    python 之 'and' 和 'or'
  • 原文地址:https://www.cnblogs.com/TreeDream/p/7058921.html
Copyright © 2020-2023  润新知