news 2026/4/16 18:28:43

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/16 12:45:45

Linly-Talker支持情感语调控制,让AI发音更有温度

Linly-Talker:让AI发音更有温度的情感语调控制技术 在虚拟主播深夜直播带货、AI客服全天候解答疑问的今天,用户早已不满足于“能说话”的数字人——他们期待的是一个会笑、会共情、语气里带着关切与热情的“真人”般的存在。可现实往往是,大多…

作者头像 李华
网站建设 2026/4/16 14:32:16

毕业季必看:7款免费AI写论文工具,10分钟生成10000字问卷论文!

如果你是正在熬夜赶Deadline的毕业生,或是面临延毕压力的研究生,又或是囊中羞涩、为论文发愁的大学生,那么这篇文章就是为你量身打造的!在学术的道路上,我们都曾经历过导师催稿的无奈,为知网查重的高昂费用…

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

Flask上下文API:从并发陷阱到架构原理解析

Flask上下文API:从并发陷阱到架构原理解析 引言:为什么上下文比你想象的更重要? 在Flask的日常使用中,开发者常常将request、session、g等全局变量的直接访问视为理所当然。然而,当你的应用需要处理并发请求、实现后台…

作者头像 李华
网站建设 2026/4/16 12:13:48

为什么顶尖团队都在用 Open-AutoGLM?深入解读其底层架构与优势

第一章:Open-AutoGLM 项目概述Open-AutoGLM 是一个开源的自动化自然语言处理框架,旨在简化大语言模型(LLM)在实际业务场景中的部署与调优流程。该项目基于 GLM 架构构建,融合了提示工程、自动微调、任务推理链生成等核…

作者头像 李华
网站建设 2026/4/16 12:34:15

【限时揭秘】:Open-AutoGLM赋能低代码的7个高阶技巧

第一章:Open-AutoGLM与低代码平台集成概述Open-AutoGLM 是一种面向自动化生成语言模型任务的开源框架,具备强大的自然语言理解与代码生成能力。将其集成至低代码开发平台,可显著提升应用构建效率,使非专业开发者也能通过可视化界面…

作者头像 李华
网站建设 2026/4/16 2:51:57

Linly-Talker支持多轮对话记忆,上下文连贯性优秀

Linly-Talker:如何让数字人“记得住、说得出、像真人” 在虚拟主播24小时不间断直播、智能客服秒回千条咨询的今天,我们对“对话”的期待早已超越简单的问答。用户不再满足于一个只会复读预设话术的机械音,而是希望面对的是一个能记住自己偏好…

作者头像 李华