汇编:通过70H, 71H端口读取cmos时间

论坛 期权论坛 脚本     
匿名技术用户   2020-12-27 12:00   11   0
assume cs:code, ds:data, ss:stack

data segment
 db 128 dup(0)
data ends

stack segment stack
 db 128 dup(0)
stack ends

code segment
 start: mov ax, stack
  mov ss, ax
  mov sp, 128

  call init_reg
testA:  call show_month
  jmp testA

  mov ax, 4C00H
  int 21H

;================================================
init_reg:
  mov bx, 0B800H
  mov es, bx  
  ret

;================================================
show_month:
  mov al, 0
  out 70H, al   ; 读取cmos的0 地址的内容
  in al, 71H    ; 将读取的1个字节存到al寄存器
  
  mov ah, al
  shr ah, 1
  shr ah, 1
  shr ah, 1
  shr ah, 1
  and al, 00001111B 
 
  add ah, 30H
  add al, 30H

  mov di, 160*10+40*2
  
  mov es:[di], ah
  mov es:[di+2], al
  ret


code ends

end start

assume cs:code, ds:data, ss:stack

data segment
 db 128 dup(0)
data ends

stack segment stack
 db 128 dup(0)
stack ends


code segment

TIME_STYLE: db 'YY/MM/DD HH:MM:SS',0
TIME_CMOS: db 9,8,7,4,2,0
  
start:  mov ax, stack
  mov ss, ax
  mov sp, 128

  call show_time_style
  call show_clock

  mov ax, 4C00H
  int 21H


;======================================================
show_clock:

showTime: mov si, OFFSET TIME_CMOS
  mov di, 160*10 + 30*2
  mov cx, 6

showDate: mov al, ds:[si]
  out 70H, al
  in al, 71H
  
  mov ah, al
  shr ah, 1
  shr ah, 1
  shr ah, 1
  shr ah, 1
  and al, 00001111B
  
  add ah, 30H
  add al, 30H
  
  mov es:[di], ah
  mov es:[di+2], al
 
  inc si
  add di, 6
  loop showDate

  jmp showTime    ; 无限循环

  ret

;=======================================================
show_string:
  push dx
  push ds
  push es
  push si
  push di

showString: mov dl, ds:[si]
  cmp dl, 0
  je showStringRet
  mov es:[di], dl
  add di, 2
  inc si
  jmp showString

showStringRet:
  pop di
  pop si
  pop es
  pop ds
  pop dx
  ret

;========================================================
show_time_style:
  mov si, OFFSET TIME_STYLE
  mov di, 160*10 + 30*2
  
  mov ax, cs
  mov ds, ax

  mov ax, 0B800H
  mov es, ax
  call show_string
  ret
code ends

end start

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

本版积分规则

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

下载期权论坛手机APP