首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将fat16十六进制解码为秒

将fat16十六进制解码为秒
EN

Stack Overflow用户
提问于 2013-11-17 18:05:45
回答 1查看 1.3K关注 0票数 0

我正在尝试转换fat16十六进制以获得时间hr:min:sec,我得到了正确的小时和分钟,但我有问题的秒。

前5位是小时,接下来的6位是分钟,最后5位是秒(结果乘以2)。

所以,如果我输入一个fat16十六进制0154,它应该给我10小时32分2秒,但我不知道如何获得秒?如果我向左移动几秒钟,我应该怎么乘以2呢?

这就是我所拥有的

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-17 18:57:15

好的,重新阅读后,编辑.所以,在使用and掩盖额外的比特后,需要将秒乘以2。您可以使用mul,但乘2(或任何2的幂)可以与移位左(同除以任何2的幂可以通过右移动)。

因此,只需使用shl ax, 1几秒钟。这会使ax乘以2,这就是您想要的。

在处理秒之前,您还会丢失mov eax, ecx

然后转换为2位ASCII十进制数字与分钟或小时的方式相同。这意味着,当您将秒数转换为2位小数时,仍然需要除以10,而不是像代码中那样被1除以1(我的意思是,除以1不做任何事情.)。

这里的10是用来转换成十进制的,而不是其他的。它起作用,因为你在AL中得到除法的结果,在AH中得到余数。当您将0x3030添加到AX时,实际上将0x30添加到AH,将0x30添加到AL,而0x30是ASCII代码'0',因此范围0.9中的数字在一次操作中被转换为字符‘0’.‘9’,对于AL和AH,都是这样。然后,x86是小终端CPU,这意味着,当您存储AX时,它首先存储AL,然后是AH,因此您实际上在目标字符串中得到了正确的数字,而不需要交换AL和AH。

值得注意的是,只有在没有溢出的情况下,AX的初始值在0..99范围内才能工作。如果是其他东西,就会得到垃圾输出。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20034253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档