王爽汇编 实验14读取CMOS RAM时间信息

论坛 期权论坛 脚本     
匿名技术用户   2021-1-16 08:07   97   0

ASSUME CS:codesg
data SEGMENT
DB "/",":"
data ENDS
stack SEGMENT
DW 0,0
stack ENDS
codesg SEGMENT
start: MOV AX,data
MOV DS,AX
MOV SI,0
MOV AX,stack
MOV SS,AX
MOV SP,4
MOV AX,0b800h
MOV ES,AX

MOV DI,12*160+30*2 ;取屏幕中间位置

MOV BX,0
MOV DL,9
MOV CX,3
NYR: PUSH CX
MOV AL,DL
OUT 70h,AL
IN AL,71h
MOV AH,AL ;假设al中为读出的8位BCD码
MOV CL,4
SHR AH,CL ;ah右移4位,便移除了个位的BCD码
ADD AH,30h
AND AL,00001111b ;al保留下来的便是个位BCD码
ADD AL,30h
MOV ES:[DI+BX],AH
MOV ES:[DI+BX+2],AL
MOV AL,DS:[SI]
MOV ES:[DI+BX+4],AL
ADD BX,6
DEC DL
POP CX
LOOP NYR ;取得年月日

MOV BYTE PTR ES:[DI+16],0 ;去掉日后面的“/”

ADD BX,2 ;中间空格
MOV DL,4
MOV CX,3
MFS: PUSH CX
MOV AL,DL
OUT 70h,AL
IN AL,71h
MOV AH,AL ;假设al中为读出的8位BCD码
MOV CL,4
SHR AH,CL ;ah右移4位,便移除了个位的BCD码
ADD AH,30h
AND AL,00001111b ;al保留下来的便是个位BCD码
ADD AL,30h
MOV ES:[DI+BX],AH
MOV ES:[DI+BX+2],AL
MOV AL,DS:[SI+1]
MOV ES:[DI+BX+4],AL
ADD BX,6
SUB DL,2
POP CX
LOOP MFS ;取得秒分时

MOV BYTE PTR ES:[DI+36],0 ;去掉秒后面的“:”

JMP s ;实时读取时间

MOV AX,4c00h
INT 21h

codesg ENDS
END start

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP