【问题标题】:How to set the system time using assembly 8086 with dosbox? [closed]如何使用带有dosbox的程序集8086设置系统时间? [关闭]
【发布时间】:2018-06-15 03:47:46
【问题描述】:

我想设置系统时间,并获取显示时间。我已使用以下代码成功获取系统时间

mov ah,2ch              ;get time
int 21h                 ;ch = hr, cl = min, dh = sec

但我无法设置系统时间,通过以下两种方法

mov ah,03h

mov ch,hr(in bcd)
mov cl,mm(in bcd)
mov dh,sec(in bcd)
mov dl,am_pm

int 1ah 

mov ah,2dh
mov ch,hr
mov cl,mm
mov dh,sec
int 21h

【问题讨论】:

  • 你是如何检查时间是否改变的?程序退出后,您是否在 DOS shell 中运行了data?或者使用你的get-time程序?您意识到这只会在您运行 set-time 的 DOSBOX 或 emu8086 虚拟机的一个实例中设置时间,对吧,而不是您的主系统的时间(Windows/Linux/OS X)?
  • 糟糕,我的意思是date,而不是data。或者我猜在 DOS 中的命令是 time.
  • 我使用代码来获取时间并显示在dosbox中,但结果是00:00:00,我认为你是对的,它不会改变系统时间。所以我想知道我改变的时间?
  • 您确定打印正确,还是设置了正确的时间(如果 00:00:00 出乎意料)?使用调试器!并发布minimal reproducible example
  • 从文档看来int 21h / AH=2Dh 应该可以工作。如果它不适合您,请发布 minimal reproducible example 您所做的事情。

标签: assembly emu8086 dosbox


【解决方案1】:
.MODEL SMALL
.DATA
.CODE
START: MOV AX,@DATA
MOV DS,AX

;Hour Part
HOUR:
MOV AH,2CH    ; To get System Time
INT 21H
MOV AL,CH     ; Hour is in CH
AAM
MOV BX,AX
CALL DISP

MOV DL,':'
MOV AH,02H    ; To Print : in DOS
INT 21H

;Minutes Part
MINUTES:
MOV AH,2CH    ; To get System Time
INT 21H
MOV AL,CL     ; Minutes is in CL
AAM
MOV BX,AX
CALL DISP

MOV DL,':'    ; To Print : in DOS
MOV AH,02H
INT 21H

;Seconds Part
Seconds:
MOV AH,2CH    ; To get System Time
INT 21H
MOV AL,DH     ; Seconds is in DH
AAM
MOV BX,AX
CALL DISP


;To terminate the Program

MOV AH,4CH     ; To Terminate the Program
INT 21H

;Display Part
DISP PROC
MOV DL,BH      ; Since the values are in BX, BH Part
ADD DL,30H     ; ASCII Adjustment
MOV AH,02H     ; To Print in DOS
INT 21H
MOV DL,BL      ; BL Part 
ADD DL,30H     ; ASCII Adjustment
MOV AH,02H     ; To Print in DOS
INT 21H
RET
DISP ENDP      ; End Disp Procedure


END START      ; End of MAIN

好好试试这个吧

【讨论】:

  • OP 正在寻找时间,他们知道如何获得它。
  • 表示他需要实时显示时间然后...
  • 不,他的意思是他希望能够将时间设置为小时分钟和秒的特定值。您只显示数字而不是设置它。 OP还在thw问题中说他们已经知道如何获得时间。
  • 知道了,他想更改系统时间本身。
猜你喜欢
  • 2017-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多