yundi 发表于 2016-1-29 17:39:13

第14章检测实验及笔记

本帖最后由 yundi 于 2016-1-29 18:27 编辑

实验14



哈哈{:9_227:}

;以“年/月/日 时:分:秒”的格式显示当前日期、时间
assume cs:code
data segment
        db 'yy/mm/dd hh:mm:ss','#';#换成美元符$
sf        db 0,3,6,9,12,15;保存上一行格式串的偏移位置
rf   db 9,8,7,4,2,0;保存cmos ram端口下的n号单元
data ends
code segment
start:
      
        mov ax,data
        mov ds,ax;设数据段
        mov cx,6;循环次数
        mov si,0;用偏移取到sf,rf的数据
s1:
      ;循环取出cmos ram第n号单元的信息
        call getinfo
      ;取到的值转成字符并保存到指定位置ds:
        call saveinfo;调用时ah al 保存着getinfo取得的信息
        inc si
        loop s1
      ;循环结束
      ;在屏幕指定位置显示字符串,用中断方式
        mov dx,0
        mov ah,9
        int 21h

        mov ax,4c00h
        int 21h
       
getinfo:       
        mov al,byte ptr ds:;要读的单元号n=ds:
        out 70h,al
        in al,71h
        mov ah,al
        ret
       
saveinfo:
        xor bh,bh
        mov bl,byte ptr ds:;取得格式字符串要修改的位置的偏移值,存到bx
        ;在ah中处理高位,
        push cx
        mov cl,4
        shr ah,cl
        add ah,30h
        pop cx
        mov ds:,ah;保存xx的高位到格式字符串中
        ;在al中处理低位,
        and al,00001111b
        add al,30h
        mov ds:,al;保存xx的低位到格式字符串中
        ret

code ends
end start
页: [1]
查看完整版本: 第14章检测实验及笔记