|
主题 : : 实验14可否显示完整的"2007/XX/XX”? [待解决] |
回复[ 14次 ]
点击[ 1148次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2007-12-18 02:57 ]
[引用]
[回复]
[ top ] | |
荣誉值:7
信誉值:10
注册日期:2007-11-26 03:32 |
是不是CMOS中只有07而没有20啊?
为什么windows操作系统里的时间可以编出2007?
难道windows中的2007只有07是真实的,而前面的20是强加上去的? | | |
|
|
|
|
[第1楼]
[ 回复时间:2007-12-18 15:43 ]
[引用]
[回复]
[ top ] | |
荣誉值:32
信誉值:0
注册日期:2007-07-14 19:06 |
|
|
|
|
|
[第2楼]
[ 回复时间:2007-12-18 15:44 ]
[引用]
[回复]
[ top ] | |
荣誉值:32
信誉值:0
注册日期:2007-07-14 19:06 |
给你点儿资料参考一下吧。
偏移值(Offset)数据字段的意义描述(Description)
00h 目前系统时间的“秒数”字段
01h 预约警铃时间的“秒数”字段
02h 目前系统时间的“分钟”字段
03h 预约警铃时间的“分钟”字段
04h 目前系统时间的“小时”字段
05h 预约警铃时间的“小时”字段
06h 星期几(星期一=01,星期二=02,依次类推)
07h 目前系统日期字段(0~31)
08h 目前系统月份字段(0~12)
09h 系统公元纪年的后两位(00~99;00=2000,01=2001,以此类推)
0Ah Status Register A(状态寄存器A)
Bit7指示位。0=目前可读取日期/时间,1=日期/时间更新中,稍后读取
Bit6-4计时频率除法器的填值,BIOS默认为010b,指定32.768KHz的计数频率
Bit3-0设置闹钟警示中断频率。BIOS默认为1024Hz,每次中断间隔为1/1024秒
0Bh Status Register B(状态寄存器B)
Bit7停止系统频率设定时间(0=直接设定时间,实时系统仍在计时状态)(1=停止CRT计时并设定时间)
Bit6周期性中断(0=Disable,1=Enable)
Bit5Alarm Interrupt(0=Disable,1=Enable)
Bit4Update-Ended Interrupt(0=Disable,1=Enable)
Bit3Square wave 方波设定(0=关掉方波,1=依Status Reg A 设定产生方波)
Bit2Date and Time Mode (0=使用BCD格式,为默认值。1=binary二进制值)
Bit124 或 12 小时计时制(0=指定12小时制,1=设定24小时制)
Bit0日光节约时间(0=Disable,1=Enable)
0Ch Status Register C(状态寄存器C),以下为只读状态
Bit7IRQ Flag (read-only)
Bit6Periodic Interrupt Flag (read-only)
Bit5Alarm Interrupt Flag (read-only)
Bit4Update Interrupt Flag (read-only)
Bit3-0保留未用,应该设为 0。
0Dh Status Register D(状态寄存器D)
Bit7CMOS RAM内容合法(0=CMOS电池储电量偏低,RAM内容正常)(0=CMOS电池储电量偏低,RAM内容异常)
Bit6-0保留未用,应该设为 0。
0Eh Diagnostic Status(诊断状态记录值)
Bit7CMOS/RTC芯片电源(0=电源正常,1=电源不正常)
Bit6CMOS RAM checksum加总检查值状态(0=检查值正常,1=检查值不符)
Bit5CMOS RAM组态(0=CMOS记录的组态与目前检测到的一致,1=组态不一致)
Bit4CMOS RAM 记录的内存状态(0=CMOS记录的内存跟目前检测到的一致,1=组态不一致)
Bit3硬盘C:起始状态(0=启动通过,准备boot。1=硬盘C:启动失败,无法boot)
Bit2时间状态指示(0=记录时间正常。1=记录时间异常)
Bit1-0保留未用,应该设为 0。
0Fh shutdown status byte 当机复位指示字节,指示值如下:
00h软件或其他不知名状态下的复位(reset)
01h正在真实/保护模式下检查内存时发生reset或者重新进入真实模式下做芯片组initialization时发生reset
02h在真实/保护模式下内存家传通过后的系统复位
03h在真实/保护模式下内存家传通失败的系统复位
04h通过INT 19h重新开机(boot)
05h清除键盘中断(产生一个EOI信号)并且跳到40h:0067h记录的跳跃位置
06h在保护模式下完成所有测试后的系统复位或在未产生EOI信号下跳到40h:0067h记录的跳跃位置
07h在保护模式下没有通过所有测试后的系统复位
08h由POST切到保护模式下进行内存家测时所使用
09h由BIOS INT 1h 的 AH=87h(区块移动功能)所使用
0Ah返回并跳跃到40h:0067h记录的程序进入点地址
0Bh以IRET方式回到40h:0067h记录的程序进入点
0Ch以RETF方式回到40h:0067h记录的程序进入点
0Dh-FFh系统电源刚打开时的复位
10h 值软驱类型
00None
01360K 5.25 in.
021.2M 5.25 in.
30720K 3.5 in.
401.44M 3.5 in.
502.88M 3.5 in.
11h~13h 可供其他用途
14h Bits7-6软盘驱动器数目(00=1 Drive,01=2 Drives)
Bits5-4Monitor Type 显示器型号(00=Monochrome,01=40*25 CGA,10=80*25 CGA,11=VGA/EGA)
Bit3显示功能位(0=不显示,1=启用并显示))
Bit2键盘功能位(0=关掉键盘,1=启用键盘)
Bit1协处理器(x87)(0=不具备FPU,1=具备)
Bit0软盘机Drive(0Disabled,1=Enabled)
15h 传统主存储器KB数,低字节
16h 传统主存储器KB数,高字节C0280h=640K
17h 与IBM PC 兼容的总内存KB数,低字节
18h 与IBM PC 兼容的总内存KB数,高字节(最大值仅FFFF=65535=64M)
19h~2Dh 可供其他用途
2Eh 标准CMOS RAM 加总检查值,低字节
2Fh 标准CMOS RAM 加总检查值,高字节
30h 与IBM PC 兼容的扩展内存KB数,低字节
31h 与IBM PC 兼容的扩展内存KB数,高字节
32h 公元年号除以100后的BCD字段(20h=2000~2099,跟09h字段凑成整个公元纪年)
33h~34h 保留未用
35h POST所检测到扩展内存K数,除以64KB后的数值(低字节)
36h POST所检测到扩展内存K数,除以64KB后的数值(高字节)
37h~3Dh 可供其他用途
3Eh 扩展CMOS加总检查值的(低字节,从34h计算到3Dh)
3Fh 扩展CMOS加总检查值的(高字节,从34h计算到3Dh)
40h~7Fh 供AMI BIOS动态配置使用 | | |
|
|
|
|
[第3楼]
[ 回复时间:2007-12-18 18:08 ]
[引用]
[回复]
[ top ] | |
荣誉值:7
信誉值:10
注册日期:2007-11-26 03:32 |
|
|
|
|
|
[第4楼]
[ 回复时间:2008-01-01 13:18 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2007-09-18 18:40 |
求教:端口32h中的数据,怎么显示不了呢?我是按照书上p259页的方法处理的呀? | | |
|
|
|
|
[第5楼]
[ 回复时间:2008-01-03 16:35 ]
[引用]
[回复]
[ top ] | |
荣誉值:32
信誉值:0
注册日期:2007-07-14 19:06 |
回复4楼:
你的程序是不是哪儿有问题啊?把你的程序在检查一下。实在不行把你的程序贴上看看。 | | |
|
|
|
|
[第6楼]
[ 回复时间:2008-01-03 18:11 ]
[引用]
[回复]
[ top ] | |
荣誉值:50
信誉值:0
注册日期:2007-07-08 09:33 |
求教:端口32h中的数据,怎么显示不了呢?我是按照书上p259页的方法处理的呀?
------------------
回复:可以用debug跟踪下看能不能读到数据,然后在看能不能正确显示,没准是你读错地方了呢~ | | |
|
|
|
|
[第7楼]
[ 回复时间:2008-03-06 02:03 ]
[引用]
[回复]
[ top ] | |
荣誉值:53
信誉值:0
注册日期:2008-02-09 02:55 |
COMS只有两个端口哦,70H和71H,上面的那么不叫端口号,而是单元号。 | | |
|
|
|
|
[第8楼]
[ 回复时间:2008-03-06 02:05 ]
[引用]
[回复]
[ top ] | |
荣誉值:53
信誉值:0
注册日期:2008-02-09 02:55 |
CMOS只有两个端口哦,70H和71H,上面的那些不叫端口号,而是单元号。 | | |
|
|
|
|
[第9楼]
[ 回复时间:2008-04-06 13:57 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:2
注册日期:2008-03-24 16:51 |
|
|
|
|
|
[第10楼]
[ 回复时间:2008-04-06 15:11 ]
[引用]
[回复]
[ top ] | |
荣誉值:342
信誉值:0
注册日期:2007-12-06 10:21 |
|
|
|
|
|
[第11楼]
[ 回复时间:2008-10-16 14:45 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-10-13 16:13 |
收藏ing~
谢谢happy给的单元号内容的意义
有点疑问
我的电脑里第14H单元里读出的数据是02H..也就是00000010,第3位和第4位都是零,这意味着键盘和显示未启用吗,可键盘仍然用的好好的呀
还有,第35H,36H里读的数据也是0,这个..
希望高手帮忙解答下 | | |
|
|
|
|
[第12楼]
[ 回复时间:2010-03-06 20:29 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-09-21 10:17 |
下面程序仅供参数:
;向CMOS读取时间
assume cs:code
data segment
ts db "Now, The Date and Time is:", 0Dh, 0Ah, '$'
unit db 50,9,'-',8,'-',7,' ',4,':',2,':',0
data ends
code segment
start:
mov ax, data
mov ds,ax
lea dx, ts
mov ah, 9
int 21h
;;show time
mov ax, 0b800h
mov es, ax
mov bx, 3*160
dynxs: mov di, 0
mov si, offset unit
mov cx, 12
s:
push cx
mov dx, 0000h; //符号标记
mov al, [si]
cmp al, 10
ja signal2 ;处理符号,非数字
signal0:
out 70h, al
in al, 71h
mov ah, al
mov cl, 4
shr ah, cl
and al, 00001111b
add ah, 30H
add al, 30H
signal:
mov byte ptr es:[bx+di], ah
mov byte ptr es:[bx+di+1], 02
cmp dx, 1000H
je signal3 ;是符号则跳过
mov byte ptr es:[bx+di+2], al
mov byte ptr es:[bx+di+3], 02
add di, 2
signal3:
add di, 2
inc si
pop cx
loop s
in al, 60h
cmp al, 01
je away
jmp short dynxs
signal2:
cmp al, 32H
je signal0 ;处理年问题
mov dx, 1000H
mov ah, al
mov al, 0
jmp short signal ;处理符号
away:
mov ax,4c00h
int 21h
code ends
end start | | |
|
|
|
|
[第13楼]
[ 回复时间:2010-12-06 22:06 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-12-05 15:22 |
|
|
|
|
|
[第14楼]
[ 回复时间:2011-02-07 14:08 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-12-20 11:44 |
|