news 2026/4/20 15:36:47

HalpInitializeClock函数分析之CMOS_WRITE宏定义和CMOS_CONTROL_PORT=0x70和CMOS_DATA_PORT=0x71

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HalpInitializeClock函数分析之CMOS_WRITE宏定义和CMOS_CONTROL_PORT=0x70和CMOS_DATA_PORT=0x71

HalpInitializeClock函数分析之CMOS_WRITE宏定义和CMOS_CONTROL_PORT=0x70和CMOS_DATA_PORT=0x71

F:\srv03rtm\base\hals/halmps/i386/mpclock.asm:279:cPublicProc _HalpInitializeClock ,0
F:\srv03rtm\base\hals/halmps/i386/mpclock.asm:366: stdRET _HalpInitializeClock
F:\srv03rtm\base\hals/halmps/i386/mpclock.asm:368:stdENDP _HalpInitializeClock

第一部分:
;
; Set the interrupt rate to what is actually needed
;
stdCall _HalpAcquireCmosSpinLock ; intr disabled

mov eax, _HalpCurrentRTCRegisterA
shl ax, 8
mov al, 0AH ; Register A
CMOS_WRITE ; Initialize it
;
; Don't clobber the Daylight Savings Time bit in register B, because we
; stash the LastKnownGood "environment variable" there.
;
mov ax, 0bh
CMOS_READ
and al, 1
mov ah, al
or ah, REGISTER_B_ENABLE_PERIODIC_INTERRUPT
mov al, 0bh
CMOS_WRITE ; Initialize it
mov al,0CH ; Register C
CMOS_READ ; Read to initialize
mov al,0DH ; Register D
CMOS_READ ; Read to initialize

stdCall _HalpReleaseCmosSpinLock


第二部分:
;
; CMOS_READ
;
; Description: This macro reads a byte from the CMOS register specified
; in (AL).
;
; Parameter: (AL) = address/register to read
; Returns: (AL) = data
;

CMOS_READ MACRO
OUT CMOS_CONTROL_PORT,AL ; ADDRESS LOCATION AND DISABLE NMI
IODelay ; I/O DELAY
IN AL,CMOS_DATA_PORT ; READ IN REQUESTED CMOS DATA
IODelay ; I/O DELAY
ENDM

;
; CMOS_WRITE
;
; Description: This macro reads a byte from the CMOS register specified
; in (AL).
;
; Parameter: (AL) = address/register to read
; (AH) = data to be written
;
; Return: None
;

CMOS_WRITE MACRO
OUT CMOS_CONTROL_PORT,AL ; ADDRESS LOCATION AND DISABLE NMI
IODelay ; I/O DELAY
MOV AL,AH ; (AL) = DATA
OUT CMOS_DATA_PORT,AL ; PLACE IN REQUESTED CMOS LOCATION
IODelay ; I/O DELAY
ENDM

第三部分:
//
// CMOS related definitions and macros
//

#define CMOS_CONTROL_PORT 0x70 // cmos command port
#define CMOS_DATA_PORT 0x71 // cmos data port
#define CMOS_FLOPPY_CONFIG_BYTE 0x10

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 11:10:43

Linly-Talker可用于儿童故事机开发,寓教于乐

Linly-Talker:用AI数字人重塑儿童故事机体验 在儿童教育产品市场,一个老生常谈的问题始终存在:如何让孩子真正“爱上听故事”?传统故事机播放预制音频,内容固定、声音单调,久而之容易被孩子遗忘在角落。而如…

作者头像 李华
网站建设 2026/4/16 17:18:54

揭秘Open-AutoGLM运行卡顿:3步精准诊断性能瓶颈并实现效率翻倍

第一章:揭秘Open-AutoGLM卡顿现象的本质在大规模语言模型部署过程中,Open-AutoGLM作为一款开源自动推理框架,频繁出现运行时卡顿问题。这种现象不仅影响推理效率,还可能导致服务响应超时。深入分析其本质,需从计算资源…

作者头像 李华
网站建设 2026/4/17 16:29:04

【开源新手必看】Open-AutoGLM贡献全流程解析:避开90%的初学者陷阱

第一章:Open-AutoGLM开源贡献导论 Open-AutoGLM 是一个面向自动化自然语言处理任务的开源框架,旨在通过大语言模型驱动的智能代理实现代码生成、任务调度与系统自优化。该项目由社区驱动,采用宽松的 MIT 许可证,鼓励开发者参与功能…

作者头像 李华
网站建设 2026/4/18 5:16:02

Linly-Talker可用于博物馆导览系统,提升游客参观体验

Linly-Talker在博物馆导览中的创新应用:打造可对话的虚拟讲解员 在一座安静的古代文明展厅里,一位游客驻足于一件青铜器前,轻声问道:“这件器物是做什么用的?”话音刚落,屏幕中身穿汉服的虚拟讲解员微微抬头…

作者头像 李华
网站建设 2026/4/19 2:20:53

【Open-AutoGLM 开发核心解密】:掌握大模型自动化开发的5大关键技术

第一章:Open-AutoGLM 开发文档核心解读 Open-AutoGLM 是一个面向自动化自然语言任务的开源框架,旨在通过可扩展的接口设计和模块化架构支持多样化的大模型集成与任务编排。其核心设计理念是“配置即代码”,开发者可通过声明式配置快速构建复杂…

作者头像 李华
网站建设 2026/4/12 10:10:28

模型推理失败怎么办?,Open-AutoGLM错误日志深度解析与修复方案

第一章:模型推理失败怎么办?Open-AutoGLM错误日志深度解析与修复方案当使用 Open-AutoGLM 进行模型推理时,遇到执行失败是常见问题。多数情况下,根本原因可通过分析系统输出的错误日志定位。首先应检查日志中是否包含 CUDA 内存溢…

作者头像 李华