Assembly 需要使用visual studio.asm文件在汇编语言中显示带小数点的数字的帮助吗

Assembly 需要使用visual studio.asm文件在汇编语言中显示带小数点的数字的帮助吗,assembly,x86,irvine32,Assembly,X86,Irvine32,需要使用visual studio.asm文件在汇编语言中显示带小数点的数字的帮助。 例如,10除以4等于2.5,但它只显示2 mov eax, 10 mov ebx, 4 xor edx, edx div ebx call WriteDec 按所需的小数位数倾斜股息。所以100/4=25,或者如果你想要10/4.5=2.22,那么你需要10000/45=222,你的算法只需要在正确的位置插入小数 按所需的小数位数倾斜股息。所以100/4=25,或者如果你想要10/4.5=2.22,那么你需要

需要使用visual studio.asm文件在汇编语言中显示带小数点的数字的帮助。 例如,10除以4等于2.5,但它只显示2

mov eax, 10
mov ebx, 4
xor edx, edx
div ebx
call WriteDec

按所需的小数位数倾斜股息。所以100/4=25,或者如果你想要10/4.5=2.22,那么你需要10000/45=222,你的算法只需要在正确的位置插入小数

按所需的小数位数倾斜股息。所以100/4=25,或者如果你想要10/4.5=2.22,那么你需要10000/45=222,你的算法只需要在正确的位置插入小数

DIV提供了整数商和余数。通过将小数点乘以10并除以除数,可以从余数中构造小数点后的整数:

INCLUDE Irvine32.inc

.CODE

main PROC
    mov eax, 10             ; Dividend
    mov ebx, 4              ; Divisor
    xor edx, edx            ; High 32 bit of dividend
    div ebx                 ; Result: EAX, remainder in EDX
    call WriteDec           ; http://programming.msjc.edu/asm/help/index.html?page=source%2Firvinelib%2Fwritedec.htm

    mov al, '.'             ; Decimal point
    call WriteChar          ; http://programming.msjc.edu/asm/help/index.html?page=source%2Firvinelib%2Fwritechar.htm

    imul eax, edx, 10       ; EAX = EDX * 10 i.e. New dividend = Old remainder * 10
    xor edx, edx            ; Clear the high part of dividend
    div ebx                 ; EAX rem. EDX = EDX:EAX / EBX
    call WriteDec           ; http://programming.msjc.edu/asm/help/index.html?page=source%2Firvinelib%2Fwritedec.htm

    exit
main ENDP

END main
根据所需的小数位数,您可以重复此过程。

DIV提供了整数商和余数。通过将小数点乘以10并除以除数,可以从余数中构造小数点后的整数:

INCLUDE Irvine32.inc

.CODE

main PROC
    mov eax, 10             ; Dividend
    mov ebx, 4              ; Divisor
    xor edx, edx            ; High 32 bit of dividend
    div ebx                 ; Result: EAX, remainder in EDX
    call WriteDec           ; http://programming.msjc.edu/asm/help/index.html?page=source%2Firvinelib%2Fwritedec.htm

    mov al, '.'             ; Decimal point
    call WriteChar          ; http://programming.msjc.edu/asm/help/index.html?page=source%2Firvinelib%2Fwritechar.htm

    imul eax, edx, 10       ; EAX = EDX * 10 i.e. New dividend = Old remainder * 10
    xor edx, edx            ; Clear the high part of dividend
    div ebx                 ; EAX rem. EDX = EDX:EAX / EBX
    call WriteDec           ; http://programming.msjc.edu/asm/help/index.html?page=source%2Firvinelib%2Fwritedec.htm

    exit
main ENDP

END main

根据所需的小数位数,您可以重复此过程。

显示您的解算尝试?是否从Irvines库写入DEC?是的,整数除法就是这样工作的。您的选项包括定点@shift_left的答案,浮点通常与硬件FP一起使用,如转换为FP和使用divsd指令,以及任意/扩展精度和/或跟踪分数和/或仅在需要时转换为十进制字符串。显示您的解算尝试?WriteDec是否来自Irvine库?是,整数除法就是这样工作的。您的选项包括定点@shift_left's answer、浮点(通常与硬件FP一起使用),如转换为FP并使用divsd指令,以及任意/扩展精度和/或跟踪分数并仅在需要时转换为十进制字符串。