汇编网首页登录博客注册
308272108的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
最新评论
最新留言
文章收藏
友情链接

[2012-02-22 12:01] 实验14 CMOS的访问

assume cs:code,ds:data

data segment

db 32 dup (0)

data ends

code segment

start:     mov ax,data
           mov ds,ax
           mov si,0            ;设置ds:si首地址

;访问CMOS 9号单元

           mov al,9
           out 70h,al          ;设置要访问的CMOS单元
           in al,71h

           mov ah,al
           mov cl,4                      
           shr ah,cl
           and al,00001111b 
           
           add ah,30h          ;将BCD码转换成ASCII码
           add al,30h
           
           mov [si],ah
           mov 1[si],al           
           mov byte ptr 2[si],'/'

;访问CMOS 8号单元

           mov al,8
           out 70h,al
           in al,71h

           mov ah,al
           shr ah,cl
           and al,00001111b

           add ah,30h
           add al,30h

           mov 3[si],ah
           mov 4[si],al
           mov byte ptr 5[si],'/'

;访问CMOS 7号单元

           mov al,7
           out 70h,al
           in al,71h

           mov ah,al
           shr ah,cl
           and al,00001111b

           add ah,30h
           add al,30h

           mov 6[si],ah
           mov 7[si],al
           mov byte ptr 8[si],20h    ;空格

;访问CMOS 4号单元

           mov al,4
           out 70h,al
           in al,71h

           mov ah,al
           shr ah,cl
           and al,00001111b

           add ah,30h
           add al,30h

           mov 9[si],ah
           mov 10[si],al
           mov byte ptr 11[si],':'

;访问CMOS 2号单元

           mov al,2
           out 70h,al
           in al,71h

           mov ah,al
           shr ah,cl
           and al,00001111b

           add ah,30h
           add al,30h

           mov 12[si],ah
           mov 13[si],al
           mov byte ptr 14[si],':'

;访问CMOS 0号单元

           mov al,0
           out 70h,al
           in al,71h

           mov ah,al
           shr ah,cl
           and al,00001111b

           add ah,30h
           add al,30h

           mov 15[si],ah
           mov 16[si],al
           mov byte ptr 17[si],0

;送入显存缓冲区

           mov ax,0b800h
           mov es,ax
           mov bx,160*21+36*2      ;设置es:bx首地址
           mov al,2                ;设置颜色属性
           mov cx,0                ;清零

s:         mov cl,[si]
           jcxz ok
           mov es:[bx],cl
           mov es:1[bx],al
           inc si
           add bx,2
           loop s

ok:        mov ax,4c00h
           int 21h
code ends 

end start
评论次数(1)  |  浏览次数(438)  |  类型(汇编作业) |  收藏此文  | 

[  tomato   发表于  2012-02-22 21:52  ]

有不少重复的代码,可以进行一下简化。

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码