2012-02-28 41 views
-1

我已经完成了程序。我想用B000h来划分CBA0123h。商出来正确。然而,应该在dx寄存器中的其余部分应该是:EA61(http://www.miniwebtool.com/hex-calculator/?number1=CBA operate = 4 & number2 = B000),而是它的A123 。我认为这与小端或什么有关。但我需要解决这个问题。我怎么能够?我旋转位?我从来没有见过如何做到这一点。我如何才能从这个分工问题中获得正确的余数?汇编语言部 - 剩下的DX寄存器

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); 
} 

回答

3

为什么你认为其余的应该是0xea610xa123the correct answer

#include <stdio.h> 

int main(void) 
{ 
    printf("%x\n", 0xCBA% 0xB000); 
} 

输出:a123

+0

http://www.miniwebtool.com/hex-calculator/?number1=CBA0123&operate=4&number2=B000 – user1193717 2012-02-28 08:25:52

+1

@ user1193717:其余部分与除法结果的小数部分不同。 – 2012-02-28 08:28:07

7

CBA0123h = B000h * 1282 + A123h。 DX值是正确的。

+0

http://www.miniwebtool.com/hex-calculator/?number1=CBA0123&operate=4&number2=B000 – user1193717 2012-02-28 08:22:59

+0

@ user1193717这是一个不余是如何工作的。这是'CBA0123h/B000h'的二进制表示。 – Mysticial 2012-02-28 08:24:06

+0

谢谢,有点困惑,但确定 – user1193717 2012-02-28 08:26:37