2012-02-28 70 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