半生缘 发表于 2013-3-5 11:56:47

在其他论坛上看到的 取CMOS RAM时间 显示代码

assume cs:code

code segment

    data1: db '??/??/?? ??:??:?? ', '$';数据段, 存放转换后的ASCII码
    data2: db 9, 8, 7, 4, 2, 0, '$'      ;单元段, 存放当前时间在cmos ram中存放的单元地址, 用于读取BCD码

   start:mov ax, cs
             mov ds, ax               ;ds:指向data段的数据段      
             mov si, offset data1      
             mov bx, offset data2    ;ds:指向data段的单元段
            
             mov cx, 6
      s1:push cx
             mov al, ds:
             out 70h, al
             inal, 71h          ;调用ascii子程序,功能为将BCD码转换成ASCII码,并存放在data段的数据
             call ascii         ;段内
             inc bx
             pop cx                                             
             loop s1                  

             mov bh, 0
             mov dh, 12         ;调用10H中断例程的2号子程序, 功能: 置光标, 参数:bh = 页号, dh = 行号, dl = 列号
             mov dl, 22
             mov ah, 2            ;ah = 子程序号
             int 10h

             mov dx, offset data1
             mov ah, 9            ;调用21h中断例程的9号子程序, 功能: 显示字符串,知道遇到$号
             int 21h            ;参数: ds:dx 指向字符串首地址, ah = 子程序号

             mov ah,1
             int 21h
             mov ax, 4c00h
             int 21h

;子程序1
;功能:将al中的BCD码转换为ACSII码,并将转换后的数据存放在ds:指向的位置
;参数: al = BCD码
;返回: 无

ascii:    push ax
            push dx

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

            add ah, 30h
            add al, 30h

            mov byte ptr ds:, ah
            mov byte ptr ds:, al

            add si, 3

            pop dx
            pop ax
            ret
code ends

end start


http://www.asmedu.net/bbs/pasteinfo.jsp?part=1&level=book&kind=1015&qkSg=2&qID=68897&readSg=1

yulin3192 发表于 2013-3-5 17:33:14

看过
不懂
不想学了

界外容远 发表于 2013-3-6 16:43:11

还有几个命令没学过呢!呵呵,正在学啊

平心 发表于 2013-3-7 08:06:10

看过
不懂
页: [1]
查看完整版本: 在其他论坛上看到的 取CMOS RAM时间 显示代码