需要帮助使用 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
根据所需的小数位数,您可以重复此过程。
需要帮助使用 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
根据所需的小数位数,您可以重复此过程。