创建计时器和 top10
Creating a timer and a top10
我正在使用 MASM 和 dosBOX
基本上,我必须根据某人完成迷宫所花费的时间来创建前 10 名。
当用户通过迷宫的初始字符时,我首先将系统时间重置为 0:
mov ah, 2Dh
mov ch, 00
mov cl, 00
mov dh, 00
int 21h
然后当用户到达迷宫的尽头时,我再次获取系统时间并将时间存储在 2 个变量中。
mov ah, 2Ch
int 21h
mov Final_Min, cl
mov Final_Sec, dh
现在我的问题是,我如何将这些 "Final_Min" 转换为秒并将它们添加到 "Final_Sec" 以便我可以获得某人完成迷宫所花费的总时间以及如何存储这些数组中的值 ?
分钟以字节大小表示 (cl
),但一旦转换为秒,一个字节就放不下了,因此我们必须使用字大小变量:
Final_Min dw ? ;WORD SIZE VARIABLES.
Final_Sec dw ?
Total_Time dw ?
array dw 10 dup(?)
mov ah, 2Ch
int 21h ;GET TIME.
;▼ MOVE BYTE SIZE MINUTES INTO WORD SIZE VARIABLE.
xor ch, ch
mov Final_Min, cx ;MINUTES FROM CL.
;▼ MOVE BYTE SIZE SECONDS INTO WORD SIZE VARIABLE.
mov dl, dh
xor dh, dh
mov Final_Sec, dx ;SECONDS FROM DH.
;▼ CONVERT MINUTES TO SECONDS AND ADD THEM.
mov ax, Final_Min
mov bx, 60
mul bx ;AX * BX = DX:AX.
add ax, Final_Sec
mov Total_Time, ax
;▼ MOVE TOTAL TIME TO FOURTH POSITION IN ARRAY.
mov ax, Total_Time
lea si, array
mov si + 6, ax ;0=FIRST, 2=SECOND, 4=THIRD, 6=FOURTH.
我正在使用 MASM 和 dosBOX
基本上,我必须根据某人完成迷宫所花费的时间来创建前 10 名。
当用户通过迷宫的初始字符时,我首先将系统时间重置为 0:
mov ah, 2Dh
mov ch, 00
mov cl, 00
mov dh, 00
int 21h
然后当用户到达迷宫的尽头时,我再次获取系统时间并将时间存储在 2 个变量中。
mov ah, 2Ch
int 21h
mov Final_Min, cl
mov Final_Sec, dh
现在我的问题是,我如何将这些 "Final_Min" 转换为秒并将它们添加到 "Final_Sec" 以便我可以获得某人完成迷宫所花费的总时间以及如何存储这些数组中的值 ?
分钟以字节大小表示 (cl
),但一旦转换为秒,一个字节就放不下了,因此我们必须使用字大小变量:
Final_Min dw ? ;WORD SIZE VARIABLES.
Final_Sec dw ?
Total_Time dw ?
array dw 10 dup(?)
mov ah, 2Ch
int 21h ;GET TIME.
;▼ MOVE BYTE SIZE MINUTES INTO WORD SIZE VARIABLE.
xor ch, ch
mov Final_Min, cx ;MINUTES FROM CL.
;▼ MOVE BYTE SIZE SECONDS INTO WORD SIZE VARIABLE.
mov dl, dh
xor dh, dh
mov Final_Sec, dx ;SECONDS FROM DH.
;▼ CONVERT MINUTES TO SECONDS AND ADD THEM.
mov ax, Final_Min
mov bx, 60
mul bx ;AX * BX = DX:AX.
add ax, Final_Sec
mov Total_Time, ax
;▼ MOVE TOTAL TIME TO FOURTH POSITION IN ARRAY.
mov ax, Total_Time
lea si, array
mov si + 6, ax ;0=FIRST, 2=SECOND, 4=THIRD, 6=FOURTH.