
小弟目前在学习8086的汇编语言,看到操作CMOS这一部分时,产生了一些疑问,还望各位达人帮忙解决一下。
问题1:CMOS的RAM中0-0dh存储了时间信息,时分秒等各个位置,分别对应一个字节,请问我用汇编语言改写这部分内容会导致下次启动时系统时间的改变吗?问题2:用BCD码...
问题1:CMOS的RAM中0-0dh存储了时间信息,时分秒等各个位置,分别对应一个字节,请问我用汇编语言改写这部分内容会导致下次启动时系统时间的改变吗?
问题2:用BCD码表示时分秒时,一个字节8位就够用了,但是年为什么也是一个字节?年可以是上千上万的毕竟。 展开
问题2:用BCD码表示时分秒时,一个字节8位就够用了,但是年为什么也是一个字节?年可以是上千上万的毕竟。 展开
4个回答
展开全部
回答1,不会改变系统时间,你所做的更改都是在保护模式下的虚拟8086模式,也就是说你修改的CMOS都是模拟的,你修改的东西无法对真正CMOS产生影响。
回答2,年之所以是一个字节完全是那个时代的问题,那时候的程序员没有考虑到2000年以后的情况,所以还产生了千年虫问题。还有baitang36的回答是错误的,BCD码表示的最大年数是99,并非255.
以下是百度百科的解释
“千年虫”问题的根源始于60年代。当时计算机存储器的成本很高,如果用四位数字表示年份,就要多占用存储器空间,就会使成本增加,因此为了节省存储空间,计算机系统的编程人员采用两位数字表示年份。随着计算机技术的迅猛发展,虽然后来存储器的价格降低了, 但在计算机系统中使用两位数字来表示年份的做法却由于思维上的惯性势力而被沿袭下来, 年复一年,直到新世纪即将来临之际,大家才突然意识到用两位数字表示年份将无法正确辨识公元2000年及其以后的年份。
回答2,年之所以是一个字节完全是那个时代的问题,那时候的程序员没有考虑到2000年以后的情况,所以还产生了千年虫问题。还有baitang36的回答是错误的,BCD码表示的最大年数是99,并非255.
以下是百度百科的解释
“千年虫”问题的根源始于60年代。当时计算机存储器的成本很高,如果用四位数字表示年份,就要多占用存储器空间,就会使成本增加,因此为了节省存储空间,计算机系统的编程人员采用两位数字表示年份。随着计算机技术的迅猛发展,虽然后来存储器的价格降低了, 但在计算机系统中使用两位数字来表示年份的做法却由于思维上的惯性势力而被沿袭下来, 年复一年,直到新世纪即将来临之际,大家才突然意识到用两位数字表示年份将无法正确辨识公元2000年及其以后的年份。
追问
请问现代的年在CMOS中如何存储才防止千年虫的问题呢?
参考资料: http://baike.baidu.com/view/677788.htm
已赞过
已踩过<
评论
收起
你对这个回答的评价是?

2025-08-18 广告
深圳市金创图电子设备有限公司,联系电话:18928465613。金创图是一家集研发、生产、营销、服务为一体的高新技术企业。致力于生产:管装烧录机,编带烧录机,托盘烧录机,通用型烧录机、自动一体化烧录机等;设备产品具有高速率、高刚性、高性能、...
点击进入详情页
本回答由小谢提供
展开全部
你最好反汇编bios中断来看一看,像定时器中断Int 8的代码就很短,看过后就可以解决你的问题。10年前电脑报网站上有篇文章叫《BIOS中断浅析》,如果你能找到的话,这些问题都解决了,还可以学到一些技巧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1 会导致系统时间的改变
2 年只能表示某一段时间,一个字节最多0-255
当年的千年虫问题就是这个原因造成的
2 年只能表示某一段时间,一个字节最多0-255
当年的千年虫问题就是这个原因造成的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
会改变啊,你可以试试啊,至于年设置是按照1980-2079年设置的,后两位一个字节就可以了!具体原因请查询。
追问
这个意思是说 设置为11就是2011设置为99就是1999呗?
追答
对啊,80-99指的是19XX。00-79指的是20XX
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询