汇编语言 实验14 访问CMOS RAM
来源:互联网 发布:如何判断网络是否连通 编辑:程序博客网 时间:2024/05/21 17:54
汇编语言 访问CMOS RAM
CMOS RAM
是什么?
存放计算机开机必备的一些数据的硬件,由BIOS(Basic input/output system)调用其数据。
怎么用?
首先要理解端口的概念,在计算机中,与CPU可以访问的数据的位置可以有一下三种:存储器、寄存器、端口。而端口的另一端是芯片,即CPU通过端口与其他芯片相连。在这些芯片中,都有一组可供CPU读写的寄存器。站在CPU的角度,CPU对这些寄存器统一编址。那么怎么进行访问呢?首先要明白,CPU对于端口寄存器只有两种操作类型:in(从端口读取数据)、out(向端口输出数据)。例如: in al,71h(从71h端口读取数据,放到寄存器al中) out 70h,al(将寄存器al中的数据传送到70h端口中) 注:对端口的操作只能用al或者ax寄存器。
输出时间程序
时间在CMOS RAM中的表示形式:
秒:在0号单元分:2时:4日:7月:8年:9
思路:
这里可以用实验13(3)的思路,将用到的数据放在code块中,并通过offset进行访问,简单粗暴
源程序:
assume cs:codecode segmentindex: db 9,8,7,4,2,0string: db 'yy/mm/dd hh:mm:ss'start: mov ax,code mov ds,ax mov si,offset index mov bx,offset string mov cx,6s: push cx mov al,ds:[si] out 70h,al in al,71h mov ah,al mov cl,4 shr ah,cl and al,00001111b add al,30h add ah,30h mov [bx],ah mov [bx+1],al inc si;最后一次循环后,指向string add bx,3 pop cx loop s ;显示字符串 mov ax,0b800h mov es,ax mov di,160*12+40*4 mov cx,17s0: mov al,ds:[si] mov es:[di],al add di,2 inc si loop s0ok: mov ax,4c00h int 21hcode endsend start
自我总结
一开始的思路是,定义data段,将单元号放进去,然后再把‘\’和‘:’放进去(好蠢。。),然后在把从CMOS RAM中取出的al通过一个函数,直接变成:ah(高位)al(低位)。行得通,但是当我把“年”输出做好了之后,发现,还有五个要做,这样下去程序会非常长,所以必须要用循环。可是以当时的设计,做循环是不可能的,每个两位数中间都有'\'或者':'等字符。然后去瞄了一眼答案,瞬间恍然大悟。。世上那么多条路可以选,我偏偏选了最难走的那一条:(
阅读全文
0 0
- 汇编语言 实验14 访问CMOS RAM
- 王爽<汇编语言>实验14 访问CMOS RAM 解答(详细注释)
- 王爽《汇编语言》实验14——访问CMOS RAM
- 王爽 汇编语言 第三版 实验14 访问 CMOS RAM
- 王爽《汇编语言》第十四章实验——访问CMOS RAM
- 王爽《汇编语言》实验14:访问CMOS RAM打印日期和时间 解答
- 汇编实验14:访问CMOS RAM
- 王爽 《汇编语言》 实验14 利用CMOS RAM 显示时间
- 实验14:访问CMOS RAM显示当前日期和时间
- 实验十四_访问CMOS RAM
- 实验14:利用CMOS RAM 显示时间
- 访问CMOS RAM
- 王爽汇编 实验14读取CMOS RAM时间信息
- [Hb-XIV] 访问CMOS RAM(端口)
- 访问PC IO CMOS RAM(读取bios时间)
- 王爽《汇编语言》课程设计二(只包含CMOS RAM操作不包含软盘操作)
- 端口 port CMOS RAM
- 汇编语言 实验14
- Redis源码剖析和注释(二十八)--- Redis 事务实现和乐观锁
- Quartz定时调度CronTrigger时间配置规则
- C#--委托
- 学生管理系统
- Hadoop分布式 之Zookeeper集群安装
- 汇编语言 实验14 访问CMOS RAM
- 什么是html总结
- 重构-改善既有代码的设计 读后感
- 复习
- springboot下webservice使用cxf jar包报错及解决
- android Activity 页面传值
- linux释放占用端口
- Java实践(二)---多态性
- 第四十一天:又到周末了,复习一下上周做的js