news 2026/6/9 7:14:39

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/6/9 17:52:19

【Open-AutoGLM调试诊断终极指南】:掌握5大核心技巧,快速定位AI模型异常

第一章:Open-AutoGLM调试诊断的核心价值与应用场景Open-AutoGLM作为新一代自动化生成语言模型框架,其内置的调试诊断机制为开发者提供了深度可观测性与高效问题定位能力。通过实时监控模型推理路径、中间状态输出及上下文感知日志追踪,该系统…

作者头像 李华
网站建设 2026/6/9 18:50:14

Linly-Talker与Unity引擎对接方案详解,拓展游戏应用场景

Linly-Talker与Unity引擎对接方案详解,拓展游戏应用场景 在如今的游戏开发中,玩家早已不再满足于“点击对话框→观看预录动画”的传统NPC交互模式。他们渴望更自然、更具个性化的交流体验——能听懂自己说话、会根据情绪做出反应、甚至拥有独特性格的虚拟…

作者头像 李华
网站建设 2026/6/8 8:19:00

揭秘Open-AutoGLM企业定制开发费用:为何同类需求价格相差3倍?

第一章:揭秘Open-AutoGLM企业定制开发费用:为何同类需求价格相差3倍?企业在引入Open-AutoGLM进行定制化开发时,常发现相似功能需求的报价差异巨大,甚至可达三倍之多。这种价格分歧并非偶然,而是由多个关键因…

作者头像 李华
网站建设 2026/6/9 17:43:19

Open-AutoGLM插件化开发全攻略(仅限内部流传的技术路径曝光)

第一章:Open-AutoGLM 二次开发接口使用指南Open-AutoGLM 提供了一套灵活且可扩展的二次开发接口,允许开发者基于其核心能力构建定制化应用。通过该接口,用户可以实现模型调用、上下文管理、插件集成以及响应后处理等高级功能。环境准备与依赖…

作者头像 李华
网站建设 2026/6/9 17:45:51

9 个降AI率工具,专科生快速避坑指南

9 个降AI率工具,专科生快速避坑指南 AI降重工具,让论文更自然更安心 随着人工智能技术的广泛应用,越来越多的专科生在撰写论文时开始依赖AI辅助工具。然而,AI生成的内容往往带有明显的“AI痕迹”,不仅容易被查重系统识…

作者头像 李华
网站建设 2026/6/9 17:41:04

Linly-Talker可用于儿童早教机器人设计,互动性强趣味高

Linly-Talker:为儿童早教机器人注入“生命感”的AI数字人引擎 在幼儿园的角落里,一个孩子正对着屏幕中的“小老师”认真提问:“为什么月亮有时候是圆的,有时候是弯的?”话音刚落,屏幕上那个长着大眼睛、笑容…

作者头像 李华