我多次尝试用汇编语言获取完整的程序:
X = | ((A*B) – (C*D)) | / E
当我将A与B相乘并将结果保存在Ax和Dx中时,我将结果放入Result var后清除Ax和Dx,并将C与D相乘并将结果保存在Ax和Dx中。
我不知道如何用Result var减去Ax,Dx的值,因为它们是2个单词(A * B)sub 2个单词(C * D)
此外,当我想要将它们分开时,它将是1个字(E)上的2个字(A * B-C * D)
请帮助我告诉我如何分成2个单词并将2个单词分成两个单词& 1个字,
谢谢大家
答案 0 :(得分:2)
使用sbb命令,减去借位。它具有减去其两个操作数(如sub do)的效果,然后如果设置了进位标志则再减去一个操作数。反过来,进位标志应该通过前面从下部寄存器中减去来设置(或不设置)。
sub ax, cx
sbb bx, dx
现在bx:ax有结果。
此外,现代Intel CPU即使在16位模式下也具有32位寄存器和算术运算。但是,汇编程序可能不支持它。