需要帮助使用 visual studio .asm 文件以汇编语言显示带小数位的数字

Need help to display number with decimal places in assembly language using visual studio .asm file

需要帮助使用 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 并且您的算法显示该值只需要在适当的位置插入小数。

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

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