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

我的博客

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

[2008-04-13 17:27] 实验14  访问CMOS ROM

图片载入中
简单分析:
在CMOS ROM中存放有:
秒:0   分:2    时:4      日:7    月:8    年:9
看到这个就有点郁闷了,想找点规律一个循环搞定,结果发现没那能力。有6个数据,一个一个处理,又点不甘心。
两难之下,决定分两次处理(总算有一点规律):
先处理年月日,再处理时分秒。
两部分都使用到了子程序:changeBCD
显示部分,本来可以自己处理的,但考虑到以前已经写过几次了,直接调用中断得了。
;---------------------------------代码如下----------------------------------------------
assume cs:code,ds:data
data segment
db 32 dup ('$')
data ends
code segment
start:  
        mov ax,data
        mov ds,ax
        mov si,0

        mov bl,9                    ;处理年月日
        mov cx,3
ymd:                            
             call changeBCD
        dec bl
        loop ymd

        mov bl,4                     ;处理时分秒
        mov cx,3
hms:
        call changeBCD
        add bl,2
        loop hms
;------------------------------加入分隔符--------------------------------------------------
                                
        mov si,2                       ;输入“/”
        mov byte ptr [si],'/'
        add si,3
        mov byte ptr [si],'/'
        
        add si,3                ;输入“ ”
        mov byte ptr [si],' '
        
        add si,3                ;输入“ :”
        mov byte ptr [si],':'
        add si,3
        mov byte ptr [si],':'

;----------------------调用10h号中断,设置光标--------------------------------------------
        mov ah,2
        mov bh,0
        mov dh,12
        mov dl,20
        int 10h
;----------------------调用21h中断,显示字符串-------------------------------------------
        mov dx,0
        mov ah,9
        int 21h

        mov ax,4c00h
        int 21h
;---------------------子程序: changeBCD----------------------------------------------------
;子程序: changeBCD
;功能:   从CMOS ROM读取BCD码,并转化为十进制字符。
;参数:   CMOS ROM的(bl)号单元
;返回:   返回一个字符串,首地址为ds:si
changeBCD:
        push cx

        mov al,bl 
        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 [si],ah
        mov [si+1],al
        add si,3

        pop cx

        ret

code ends
end start
;---------------------------------结果见上图---------------------------------------------
评论次数(1)  |  浏览次数(1138)  |  类型(汇编作业) |  收藏此文  | 

[  xiaochong   发表于  2008-04-13 18:16  ]

恩,博主做的不错!

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