zoukankan      html  css  js  c++  java
  • 端口02 零基础入门学习汇编语言68

    第十四章:端口02

     

    让编程改变世界

    Change the world by program


     

    CMOS RAM中存储的时间信息

     

    在CMOS RAM中,存放着当前时间:

    秒:00H

    分:02H

    时:04H

    日:07H

    月:08H

    年:09H

    这6个信息的长度长度都为1个字节。  

    这些数据以BCD码的方式存放:

    数码: 0 1 2 3 4 BCD码:0000 0001 0010 0011 0100   数码: 5 6 7 8 9 BCD码:0101 0110 0111 1000 1001   例如:数值26,用BCD码表示为:0010 0110 可见,一个字节可表示两个BCD码。则CMOS RAM存储时间信息的单元中,存储了用两个 BCD码表示的两位十进制数,高 4 位的BCD码表示十位,低4 位的BCD 码表示个位。 比如:00010100b表示14。  

    课堂作业:

     

    编程:在屏幕中间显示当前的月份。

    这个程序主要做两部分工作:  

    (1)从CMOS RAM的8号单元读出当前月份的BCD码;(回忆一下)

    CMOS RAM芯片回顾:

    70h为地址端口,存放要访问的CMOS RAM单元的地址;

    71h为数据端口,存放从选定的CMOS RAM 单元中读取的数据,或要写入到其中的数据。

     

    要读取 CMOS RAM的信息,我们首先要向地址端口70h写入要访问的单元的地址:

    mov al,8

    out 70h,al

    然后从数据端口71h中取得指定单元中的数据:

    in al,71h

     

    (2)将用BCD码表示的月份以十进制的形式显示到屏幕上。

    提示:我们可以看出 ,BCD 码值=十进制数码值,则BCD码值+30h=十进制数对应的ASCII码。  

    源码分析

      我们需要进行两步工作:

    (1)将从CMOS RAM的8号单元中读取的一个字节,分为两个表示BCD码值的数据。

    mov ah, al ; al中为从CMOS RAM的 8号单元

    ; 读出的数据

    mov cl, 4

    shr ah, cl ; ah中为月份的十位数码值

    and al, 00001111b ; ah中为月份的个位数码值

     

    (2)显示(ah)+30h 和 (al)+30 对应的ASCII码字符。

      程序源代码:相关代码下载  

    实验十四

      编程:以“年/月/日 时:分:秒”的格式,显示当前日期和时间。 注意:CMOS RAM 中存储着系统的配置信息,除了保存时间信息的单元外,不要向其他的单元中写入内容,否则将引起一些系统错误的~ [buy] 获得所有教学视频、课件、源代码等资源打包 [/buy] [Downlink href='http://kuai.xunlei.com/d/LIWNJVVTFTWY']视频下载[/Downlink]
  • 相关阅读:
    [牛客]十二桥问题 解题报告
    [NOIP2017 逛公园] 解题报告
    [JSOI2008]最小生成树计数 解题报告
    类欧几里得算法
    概率与期望题目列表
    [SCOI2008]配对 解题报告
    拦截导弹
    牛客网-约数的个数
    牛客网-成绩排名
    最大连续区间和的算法总结
  • 原文地址:https://www.cnblogs.com/LoveFishC/p/3847067.html
Copyright © 2011-2022 走看看