随笔 - 79  文章 - 58  trackbacks - 0
<2008年1月>
303112345
6789101112
13141516171819
20212223242526
272829303112
3456789

常用链接

留言簿(9)

随笔分类

随笔档案

文章档案

相册

搜索

  •  

积分与排名

  • 积分 - 292896
  • 排名 - 87

最新评论

阅读排行榜

评论排行榜

(1)包含一个实时时钟和一个128个存储单元的RAM存储器

(2)靠电池供电

(3)128个字节的RAM中,内部时钟始终占用0~0dh,其余单元用来保存系统配置信息,供系统启动时BIOS程序读写

(4)两个端口,70h为地址端口,存放要访问CMOS RAM单元的地址,71H为数据端口,从CMOS读写数据


 

(5)额外 shl 左移指令 shr 右移指令, 最后移出的一为写入CF中,移动位数大于1,则必须放入cl中

(6)昨天写的读取CMOS时间的程序。写出来大家指点

assume cs:code,ds:data
data segment
db 9,8,7,4,2,0
db '// :: '
data ends
code segment
start:     
      mov ax,data
      mov ds,ax
      mov si,0
      mov di,0
      mov cx,6
s:   
      push cx
      mov al,ds:[si]
      out 70h,al
      in al,71h
      mov ah,al
      mov cl,4
      shr ah,cl
      and al,00001111b
      add ah,30h
      add al,30h
      mov dl,71h
      mov bx,0b800h
      mov es,bx
      mov byte ptr es:[di].[160*12+40*2],ah
      mov byte ptr es:[di].[160*12+40*2+1],dl
      add di,2
      mov byte ptr es:[di].[160*12+40*2],al
      mov byte ptr es:[di].[160*12+40*2+1],dl
      ;inc si
      add di,2
      mov al,ds:[si].[6]
      mov byte ptr es:[di].[160*12+40*2],al
      mov byte ptr es:[di].[160*12+40*2+1],dl
      add di,2
      inc si
      pop cx   
      loop s
      mov ax,4c00h
      int 21h
code ends
end start

posted on 2007-06-17 16:27 merlinfang 阅读(1143) 评论(1)  编辑 收藏 引用 所属分类: 汇编语言

FeedBack:
# re: 学习汇编--CMOS[12][未登录] 2008-02-23 17:08 1
assume cs:code,ds:data
data segment
db '00/00/00 00:00:00','$'
data ends

code segment
start:mov ax,data
mov ds,ax
mov si,0
mov bl,9
mov cx,3
s1:mov al,bl
call time
mov [si],ah
mov [si+1],al
dec bl
add si,3
loop s1
mov bl,4
mov cx,3
s2:mov al,bl
call time
mov [si],ah
mov [si+1],al
sub bl,2
add si,3
loop s2
mov dx,0
mov ah,9
int 21h
mov ax,4c00h
int 21h
time:push cx
out 70h,al
in al,71h
mov ah,al
mov cl,4
shr ah,cl
and al,00001111b
add ah,30h
add al,30h
pop cx
ret
code ends
end start  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理