ASM 显示动态时钟

这篇博客介绍了如何使用ASM访问CMOS RAM获取实时日期和时间,并动态显示。内容涉及端口操作、BCD到ASCII的转换,以及在VirtualBox环境中运行时的CPU占用问题。作者提到代码会导致频繁更新,提高CPU占用,且在Bochs-2.1.1中时间显示异常。此篇作为16位实模式汇编学习的总结,作者计划转向学习32位实模式,感叹GDT表格式难以记忆。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这次练习访问CMOS RAM获取,并动态显示实时日期和时间。涉及端口访问和很多具体规范,比如BCD码和ASCII码的转换。我的代码算是简化版,显示更新间隔不是每秒,而是不断更新…导致CPU占用较高。
运行截图
上面的截图是程序在VirtualBox中的运行截图。调试中我发现Bochs-2.1.1的时间飞快,运行时只看到秒和分疯狂地变化…

    ; 动态时钟显示.asm
    ; Coco 07
    ; 硬盘主引导扇区程序
    ; 2020.3.15 11:49 创建
    ; 2020.3.16 11:12 修改
;============================================================
SECTION main vstart=0x7c00
    jmp start
;----------data
    stack times 32 dw 0
    string_hello db 'Hello! Welcome to Coco computer.',0
 start:                     ;主程序
;----------code
    ;-初始化-
    mov ax,stack
    mov ss,ax
    xor ax,ax
    mov sp,ax
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值