汇编语言 实验14 访问CMOS RAM
汇编语言 访问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:code
code segment
index: db 9,8,7,4,2,0
string: db 'yy/mm/dd hh:mm:ss'
start: mov ax,code
mov ds,ax
mov si,offset index
mov bx,offset string
mov cx,6
s: 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,17
s0: mov al,ds:[si]
mov es:[di],al
add di,2
inc si
loop s0
ok: mov ax,4c00h
int 21h
code ends
end start
自我总结
一开始的思路是,定义data段,将单元号放进去,然后再把‘\’和‘:’放进去(好蠢。。),然后在把从CMOS RAM中取出的al通过一个函数,直接变成:ah(高位)al(低位)。行得通,但是当我把“年”输出做好了之后,发现,还有五个要做,这样下去程序会非常长,所以必须要用循环。可是以当时的设计,做循环是不可能的,每个两位数中间都有'\'或者':'等字符。然后去瞄了一眼答案,瞬间恍然大悟。。世上那么多条路可以选,我偏偏选了最难走的那一条:(
汇编语言 实验14 访问CMOS RAM的更多相关文章
- 汇编程序49:实验14 访问CMOS RAM(显示系统时间)
assume cs:code ;安装程序,使用指令out和in指令 code segment start: mov ax,cs mov ds,ax mov si,offset sub1 mov ax, ...
- 汇编实验14:访问CMOS RAM
汇编实验14:访问CMOS RAM 任务 编程,以“年/月/日 时:分:秒”的格式,显示当前的日期,时间. 预备知识 CMOS存储当前时间的信息:年.月.日.时.分.秒.这六个信息的长度均为1个字节, ...
- 实验十四_访问CMOS RAM
编程:以"年/月/日 时:分:秒"的格式,显示当前的日期,时间. 注意:CMOS RAM中存储着系统的配置信息,除了保存时间信息的单元外,不要向其他的单元写入内容,否则将引起一些系 ...
- 汇编试验十四:访问CMOS RAM
CMOS RAM 芯片的特征: 包含一个时钟和一个有128个存储单元的RAM存储器. 该芯片靠电池供电.所以,关机后其内部的时钟仍可正常工作,RAM中的信息不丢失. 128个字节的RAM中,内部时钟占 ...
- 王爽<<汇编语言>> 实验十四
;以"年/月/日 时:分:秒"的格式, 显示当前的日期, 时间 assume cs:code code segment main: out 70h,al ;告诉CMOS RAM将要 ...
- 王爽<汇编语言>实验十
实验十 3.数值显示(以下程序附带测试程序) ;名称: dtoc ;功能: 将dword型数据转变为表示十进制数的字符串,字符串以0为结尾 ;参数: (ax)=dword型数据低字 ; (dx)=dw ...
- 汇编语言实验1 & macOS下DOSBox的安装
一.macOS下DOSBox的安装 1.在官网下载DOSBox-0.74.dmg 打开,此时默认z盘 一番折腾,终于搞定debug 然后为了不用每次都执行mount,遂更改配置文件自动挂在目录 再次打 ...
- 实验14:VLAN间的路由
实验11-1: 单臂路由实现VLAN 间路由 Ø 实验目的通过本实验,读者可以掌握如下技能:(1) 路由器以太网接口上的子接口(2) 单臂路由实现VLAN 间路由的配置Ø 实验拓扑 实验步 ...
- 汇编语言实验1—Debug基础操作
1.使用Debug,将下面的程序段写入内存,逐条执行,观察每条指令执行后CPU中相关寄存器中内容的变化. 记录1:最后一条指令执行完BX=(4026)H,AL=(66)H,检验结果. 两种写入:e命令 ...
随机推荐
- 绕最新版安全狗-附上sqlmap的tamper
在t00ls 里面我发的,放博客分享 记录一下 小菜写文章,太菜 希望大佬放过我! 主要分享一下,绕狗的思路环境:windows7 + phpstudy + safedog v4.0 + Mysq ...
- vs编译OpenGL项目,出现无法打开 源 文件 "gl\glaux.h的解决办法
问题如图: 原因: 缺少编译OpenGL的头文件和库: 解决办法: 1.下载OpenGL的头文件和库: 下载地址:https://download.csdn.net/download/ssagnn23 ...
- Object冷知识
Object.create()方法创建一个新对象,使用现有的对象来提供新创建的对象的__proto__ 语法:Object.create(proto, [propertiesObject]) prop ...
- gzip解压文件报错
#tar -xvf jdk-8u131-linux-x64.tar.gz,执行命令后报错如下: gzip: stdin: not in gzip format tar: Child returned ...
- ISP PIPLINE (十) HDR
在讲HDR之前先理解一些概念,要知道为什么进行HDR? 再去想如何进行HDR. 自然界的中光强度很宽,而人眼对高亮,极暗环境的细节分辨能力比较弱.而摄像头记录的范围更窄,真正的HDR技术就是记录视觉范 ...
- 勾勾街:一个专业的苹果ios app 自助打包的网站,免越狱,免证书签名
众所周知,苹果的APP开发是需要基于MAC环境的,而我们很多的开发者并没有这样的条件,如果单单为发布一款app就去买一台价格昂贵的MAC那成本就太高了! 就算你有一台MAC,也有能力自己开发出一款基于 ...
- ODM、JDM、OEM概念
OEM (Original Equipment Manufacturer) - 原始设备制造商 委托生产,或者说“代工生产”,其含义是品牌厂商不直接制造产品,而是负责设计和开发新产品,控制销售“渠道” ...
- 正则匹配ts的引用
ts文件引入代码如下: import { IView, GridView, Sizing as GridViewSizing, Box, IGridViewStyles } from './gridv ...
- ajax常见的面试题
1. 什么是ajax? AJAX = Asynchronous (异步) JavaScript and XML,是一种用于创建快速动态网页的技术. 2. ajax接受到的数据类型是什么? 2.1 st ...
- node04
1.模板引擎 用于渲染页面 介绍jade或ejs jade:侵入式,与原生html/css不共存,使用缩进代表层级 模板后缀.jade ejs:则非侵入式的 2.jade 1)简单使用: //代码 c ...