我正在尝试将 fat16 十六进制转换为时间 hr:min:sec,我得到了正确的小时和分钟,但我遇到了秒数问题。
前 5 位是小时,接下来的 6 位是分钟,最后 5 位是秒(结果乘以 2)...
所以如果我输入一个 fat16 hex 0154 它应该给我 10 小时 32 分 2 秒,但我不知道如何获得秒数?如果我向左移动几秒钟,我应该如何将它乘以 2 ?
这就是我所拥有的
INCLUDE Irvine32.inc
.data
vFAT16 BYTE "Enter FAT16 to convert: " ,0
vTIme BYTE "--:--:--" ,0
.code
main PROC
;--------- Enter Code Below Here
call Clrscr
;-------------------------
mov dh, 11
mov dl, 0
call Gotoxy
mov edx, OFFSET vFAT16
call WriteString
;-------------------------
mov dh, 12
mov dl, 0
call Gotoxy
;-------------------------
call ReadHex
ror ax, 8
mov ecx, eax
and ax, 1111100000000000b
shr ax, 11
mov bh, 10
div bh
add ax, 3030h
mov word ptr [vTime+0], ax
mov eax, ecx
and ax, 0000011111100000b
shr ax, 5
mov bh, 10
div bh
add ax, 3030h
mov word ptr [vTime+3], ax
and ax, 0000000000011111b
shl ax, 11
mov bh, 1
div bh
add ax, 3030h
mov word ptr [vTime+6], ax
mov edx, offset vTime
call Writestring
xor ecx, ecx
call ReadString
exit
main ENDP
END main