我使用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"所以我可以得到有人用来完成迷宫的总时间以及如何将这些值存储在一个数组中?
答案 0 :(得分:1)
分钟以字节大小(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.