如何获得开关机时间,并将其存入一个文件(如:timercd.sys)

wlalw131415 2009-04-15 01:21:30
如题:
以下是我的汇编程序,开机时间正确,但不能得到关机时间(关机时间全为0),请各位指教:
coseg segment
org 100h ;.com格式
assume cs:coseg,ds:coseg
start: jmp start1
offset1c dw 0000h ;放原1C中断入口偏移量
seg1c dw 0000h ;放原1c中断入口段地址

lir proc far ;新的1c中断服务程序
push ax ;保护现场
push bx
push cx
push dx
push si
push di
push ds
push es
pushf
call dword ptr cs:offset1c;调原来1c中断
cli;禁止中断
mov ah,02h
int 1ah;读当前实时钟(CH时CL分DH秒,BCD码)
push dx
mov dx,70h;COMS索引寄存器地址
mov al,01h
out dx,al;选择秒报时寄存器
inc dx
pop ax
xchg ah,al
out dx,al;存入秒报时寄存器





mov dx,70h
mov al,03h
out dx,al;选择分报时寄存器
inc dx
mov al,cl;分
out dx,al;存入分报时寄存器
mov dx,70h
mov al,05h
out dx,al;选择时报时寄存器
inc dx
mov al,ch;时
out dx,al;存入时报时寄存器
sti
pop es;恢复现场
pop ds
pop di
pop si
pop dx
pop cx
pop bx
pop ax
iret
lir endp

filename db "c:\timercd.sys",00h ;文件名
begintm db 14 dup(0) ;本次开机日期,时间
endtm db 6 dup(0) ,0dh,0ah ;上次关机时间

stoh proc near
mov ax,cs
mov ds,ax
mov es,ax
mov bx,offset endtm ;关机时间缓冲区
mov dx,70h
mov al,05
out dx,al ;选择时报时寄存器
inc dx
in al,dx ;取关机时
call bcdtoasc;bcd码转换为ascii码
mov [bx+0],dh
mov [bx+1],dl
mov dx,70h
mov al,03
out dx,al ;选择分报时寄存器
inc dx
in al,dx ;取关机分
call bcdtoasc
mov [bx+2],dh
mov [bx+3],dl
mov dx,70h
mov al,01
out dx,al ;选择秒报时寄存器
inc dx
in al,dx ;取关机秒
call bcdtoasc
mov [bx+4],dh
mov [bx+5],dl
mov bx,offset begintm ;开机日期时间缓冲区
mov ah,4
int 1ah ;取当前日期
push dx
mov al,ch ;年的高2位
call bcdtoasc
mov [bx+0],dh
mov [bx+1],dl
mov al,cl ;年的低2位
call bcdtoasc
mov [bx+2],dh
mov [bx+3],dl
pop dx
mov al,dh ;月
push dx
call bcdtoasc
mov [bx+4],dh
mov [bx+5],dl
pop dx
mov al,dl ;日
call bcdtoasc
mov [bx+6],dh
mov [bx+7],dl
mov ah,02
int 1ah ;读当前实时钟
push dx
mov al,ch ;时
call bcdtoasc
mov [bx+8],dh
mov [bx+9],dl
mov al,cl ;分
call bcdtoasc
mov [bx+10],dh
mov [bx+11],dl
pop dx
mov al,dh ;秒
call bcdtoasc
mov [bx+12],dh
mov [bx+13],dl

mov ah,3dh
mov al,1
lea dx,filename
int 21h ;打开文件,写
mov bx,ax ;存文件标记
mov cx,0
mov dx,0
mov al,2
mov ah,42h
int 21h ;指针移到文件尾
mov ah,40h
mov cx,8
lea dx,endtm
int 21h ;上次关机时间存入文件
mov cx,14
mov ah,40h
lea dx,begintm
int 21h ;本次开机日期,时间存入文件
mov ah,3eh
int 21h ;关闭文件
ret
stoh endp




bcdtoasc proc near ;BCD码转换为ASCII码子程序
push cx
mov cl,al
and al,0fh
or al,30h
mov dl,al
mov al,cl
mov cl,04h
shr al,cl
or al,30h
mov dh,al
pop cx
ret
bcdtoasc endp

start1: call stoh
mov ax,0000h ;指定段地址
mov ds,ax
cli ;关中断
mov ax,word ptr ds:[0070h]
mov word ptr cs:offset1c,ax
mov ax,word ptr ds:[0072h]
mov word ptr cs:seg1c,ax
mov word ptr ds:[0070h],offset lir
mov word ptr ds:[0072h],cs
sti
lea dx,filename
int 27h 驻留内存
coseg ends
end start
...全文
161 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wlalw131415 2009-04-17
  • 打赏
  • 举报
回复
自己顶一下
pla_007 2009-04-15
  • 打赏
  • 举报
回复
看了下书,有这么一句话:
访问CMOS内存时,RAM地址首先写到端口70h,然后使用端口71h来读或写前面指定的RAM地址。

端口 类型 功能
----------------------------------------------
70h 输出 CMOS内存地址和开放NMI
71h I/O CMOS内存数据
lmxd70 2009-04-15
  • 打赏
  • 举报
回复
我也想问一下,cmos的70h,71h两个端口地址有什么不同
BAYNPU 2009-04-15
  • 打赏
  • 举报
回复
E:\ML615>a41
050301
20090415065824
奇怪:把70H 改为71H就能获取关机时间.
内容概要:本文系统研究了基于豪猪优化算法(CPO)的多无人机协同集群在三维空间中的避障路径规划问题,聚焦于实现以最低成本为目标的航迹优化,综合考虑路径长度、飞行高度、威胁规避及转弯角度等多个关键因素。通过构建精细化的三维环境模型与多无人机协同机制,采用Matlab平台实现CPO算法的仿真与验证,充分展示了该算法在复杂动态障碍环境下的高效搜索能力与全局优化性能。研究不仅涵盖了路径规划的数学建模与目标函数设计,还深入探讨了算法的收敛特性与鲁棒性,为智能群体系统在实际场景中的应用提供了理论依据与技术支撑。; 适合人群:具备一定编程基础和优化算法背景,从事无人机系统控制、智能路径规划、群体协同、人工智能与自动化等相关领域的科研人员、高校研究生及工程技术人员。; 使用场景及目标:①应用于多无人机协同执行侦察、灾害监测、应急救援、区域巡检等复杂任务中的自主路径规划;②为智能优化算法在三维动态环境下的路径决策问题提供可复现的技术范例;③支持研究人员对CPO算法与其他主流群智能算法(如PSO、GWO、WOA等)进行性能对比与改进研究,推动路径规划技术的发展。; 阅读建议:建议结合提供的Matlab代码进行实践操作,重点理解目标函数的多维度建模方式与CPO算法的迭代优化流程,可通过调整环境参数与约束条件进行仿真实验,对比不同算法在相同场景下的路径质量与收敛速度,从而深入掌握其优势与适用边界。
内容概要:本文围绕电动汽车参与电力系统运行备用的能力评估展开深入研究,利用Matlab代码实现对电动汽车集群提供运行备用服务的建模与仿真分析。研究重点在于量化电动汽车作为分布式灵活资源参与电网辅助服务的潜力,通过构建精细化的数学模型,分析其可调功率容量、响应速度、时空分布特性及聚合能力,并采用多面体聚合、内近似模型与闵可夫斯基和等先进方法精确刻画其可调度能力边界。研究进一步结合大规模电动汽车接入场景,探讨其在多时间尺度调度框架下参与调峰、调频等辅助服务的优化策略,评估其对提升高比例可再生能源电网灵活性与稳定性的贡献,最终通过仿真验证所提模型与方法的有效性与实用性。; 适合人群:具备电力系统分析、智能电网、新能源汽车或优化调度等相关专业背景,熟悉Matlab/Simulink仿真工具,从事科研、工程应用的高校研究生、科研人员及电力行业工程师。; 使用场景及目标:①精确评估大规模电动汽车集群在不同约束条件下可提供的运行备用容量;②研究电动汽车在日前、日内及实时调度中的动态响应能力与优化调度策略;③为高渗透率新能源电力系统提供基于移动储能的灵活性资源解决方案,支撑电网安全经济运行。; 阅读建议:建议结合Matlab代码与技术文档同步学习,重点关注多面体聚合建模、能力边界计算及优化调度算法的设计与实现,可进一步拓展至V2G(车辆到电网)、需求响应等互动场景进行二次开发与应用验证。

21,500

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧