時間 hr:min:sec を取得するために、fat16 hex を変換しようとしています。時間と分を正しく取得していますが、秒に問題があります。
最初の 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