C 汇编语言除法余数DX寄存器
我的程序差不多完成了。我试图将CBA0123h除以B000h。商的结果是正确的。但是,应该在dx寄存器中的其余部分应为:EA61(http://www.miniwebtool.com/hex-calculator/?number1=CBA0123&operate=4&number2=B000),而是A123。我想这和小恩迪安或其他什么有关。但我需要解决这个问题。我该怎么办?我旋转钻头吗?我以前从没见过怎么做。如何从这个除法问题中得到正确的余数C 汇编语言除法余数DX寄存器,c,assembly,x86,inline-assembly,division,C,Assembly,X86,Inline Assembly,Division,我的程序差不多完成了。我试图将CBA0123h除以B000h。商的结果是正确的。但是,应该在dx寄存器中的其余部分应为:EA61(http://www.miniwebtool.com/hex-calculator/?number1=CBA0123&operate=4&number2=B000),而是A123。我想这和小恩迪安或其他什么有关。但我需要解决这个问题。我该怎么办?我旋转钻头吗?我以前从没见过怎么做。如何从这个除法问题中得到正确的余数 int main(int argc, char* a
int main(int argc, char* argv[])
{
unsigned short int IDQUO = 0x0;
unsigned short int IDREM = 0x0;
mov dx, 0CBAh
mov ax, 0123h
mov bx, 0B000h
div bx
mov IDQUO, ax
mov IDREM, dx
return(0);
}
CBA0123h=B000h*1282+A123h。DX值是正确的。为什么您认为余数应该是
0xea61
<代码>0xa123是:
#包括
内部主(空)
{
printf(“%x\n”,0xCBA0123%0xB000);
}
输出:
a123
@user1193717余数不是这样工作的。这是CBA0123h/B000h
@user1193717的二进制表示法:它不会给你一个余数。引用:CBA0123h÷B000=1282.ea61745d17
-这是一个分数结果。@user1193717:余数与除法结果的分数部分不同。
#include <stdio.h>
int main(void)
{
printf("%x\n", 0xCBA0123 % 0xB000);
}