美好的一天。我的项目是用英寸和磅来计算BMI。因此,用户将输入他的身高(英寸)和体重(磅)。我已经学会了划分和倍增。我只是不知道如何在分割后包含小数点,因为我必须再将它乘以703,并且只有整数乘以703。
n1 dw 0
n2 dw 0
;gets input from user
xor dx, dx
mov ax, n1 ;n1 is the weight and n2 is the height so i'm dividing them
mov bx, n2
div bx
mov bx, ax ;answer is stored in bx
非常感谢任何帮助,谢谢!
答案 0 :(得分:1)
使用定点表示法,要获得带小数部分的除法结果,您可以写:
Mov AX,n1
XOr CX,CX
{AX:CX contains the integer number to divide by n2}
Mov BX,n2
{BX contains the integer number that divides}
XOr DX,DX
Div BX
XChg AX,CX
Div BX
{CX:AX contains the result of division (AX is the fractional part)}
但是,正如prl所说,首先是乘法然后除以。 然而,该部门总是与两个" div"出于这个原因的说明:当DIV指令的结果不能包含在AX的寄存器中时,"除以零"调用中断的调用。 在MUL之后你有一个32位数字DX:AX,可以按如下方式除以n2:
Mov CX,AX
MOV AX,DX
{AX:CX contains the result of multiplication}
Mov BX,n2
{BX contains the integer number that divides}
XOr DX,DX
Div BX
XChg AX,CX
Div BX
{CX:AX contains the result of division}
此外,要进行英寸到厘米的转换(和类似),您可以乘以代表比例因子的固定点数:
{cm=inch*028A3DH (2.54)}
MOV AX,08A3DH
MOV BX,Inch
XOR CX,CX
MUL BX
ADD DX,BX
ADC CX,CX
ADD DX,BX
ADC CX,0
{CX:DX:AX= cm (AX is the fractional part)}