王爽《汇编语言》第十四章实验——访问CMOS RAM

一. 基本概念:


1.端口的读写:


(1). 读操作,从60h端口读入一个字节,指令如下:

in al,60h


(2). 写操作,往20h端口写入一个字节,指令如下:

out 20h,al


(3). 在 in 和 out 指令中,只能使用 ax 或 al 来存放从端口中读入的数据或要发送到端口中的数据。访问8位端口时用al,访问16位端口时用ax。


2. CMOS RAM 芯片


        CMOS RAM 芯片的特征:

        (1)  包含一个时钟和一个有128个存储单元的RAM存储器。


        (2)  该芯片靠电池供电。所以,关机后其内部的时钟仍可正常工作,RAM中的信息不丢失。


        (3)  128个字节的RAM中,内部时钟占用 0~0dh  单元来保存时间信息,其余大部分单元用于保存系统配置信息,供系统启动时BIOS程序读取。


        (4)  该芯片内部有两个端口,端口地址为 70h 和 71h 。CPU 通过这两个端口来读写CMOS RAM。


        (5)  70h 为地址端口存放要访问的 CMOS RAM 单元的地址; 71h  为数据端口,存放从选定的 CMOS RAM 单元中读取的数据,或要写入到其中的数据。



3. shr  和 shl 指令


        (1)  这两条指令很简单咯,shr 为逻辑右移指令, shl 逻辑左移指令。


        (3)  需要注意的是,当移位数大于1时,必须将移动位数放在寄存器 cl 中。


4. CMOS RAM 芯片中存放的时间信息 


         在CMOS RAM 中,存放着当前的时间:年、月、日、时、分、秒。这6个信息的长度都为1个字节,存放单元:


                  秒:0        分:2         时:4          日:7         月:8         年:9


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


二.  实验:


1. 实验内容:


                 以  “年/月/日  时:分:秒“  的格式在屏幕中间显示当前时间。


2. 实验代码:


assume cs:codecode segment
start:	mov ax,0b800hmov es,axmov di,160*12+30*2mov al,0ahpush dirdata:	dec alcmp al,7jb rtimecall showadd di,6jmp short rdatartime:	sub al,2cmp al,0fehje	signcall showadd di,6jmp short rtimesign:	pop diadd di,4mov byte ptr es:[di],'/'add di,6mov byte ptr es:[di],'/'add di,12mov byte ptr es:[di],':'add di,6mov byte ptr es:[di],':'mov ax,4c00hint 21hshow:	push axpush cxout 70h,alin al,71hmov cx,4mov ah,alshr ah,cland al,0fhadd ah,30hadd al,30hmov es:[di],ahmov es:[di+2],alpop cxpop axret
code ends
end start


3. 运行结果:


                                      



本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部