端口02 - 零基础入门学习汇编语言68
2011-05-17 15:09
288 查看
第十四章:端口02
让编程改变世界Change the world by program
CMOS RAM中存储的时间信息
在CMOS RAM中,存放着当前时间:
秒:00H分:02H
时:04H
日:07H
月:08H
年:09H
这6个信息的长度长度都为1个字节。
这些数据以BCD码的方式存放:
数码: 0 1 2 3 4BCD码: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,8out 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]
相关文章推荐
- 端口02 - 零基础入门学习汇编语言68
- Call指令和Ret指令讲解02 - 零基础入门学习汇编语言49
- 寄存器(内存访问)02 - 零基础入门学习汇编语言14
- Call指令和Ret指令讲解02 - 零基础入门学习汇编语言49
- 寄存器(CPU工作原理)02 - 零基础入门学习汇编语言07
- 寄存器(CPU工作原理)02 - 零基础入门学习汇编语言07
- 第一个程序02 - 零基础入门学习汇编语言21
- 第一个程序02 - 零基础入门学习汇编语言21
- 端口01 - 零基础入门学习汇编语言67
- 转移指令的原理02 - 零基础入门学习汇编语言44
- 使用BIOS进行键盘输入和磁盘读写02 - 零基础入门学习汇编语言76
- 端口01 - 零基础入门学习汇编语言67
- 转移指令的原理02 - 零基础入门学习汇编语言44
- 内中断02 - 零基础入门学习汇编语言61
- 使用BIOS进行键盘输入和磁盘读写02 - 零基础入门学习汇编语言76
- 直接定址表02 - 零基础入门学习汇编语言73
- 内中断02 - 零基础入门学习汇编语言61
- 外中断02 - 零基础入门学习汇编语言70
- 直接定址表02 - 零基础入门学习汇编语言73
- 更灵活的定位内存地址的方法02 - 零基础入门学习汇编语言33