2011-03-04 13 views

回答

11

最後如果沒有記錯,6800沒有一個除法指令(IIRC這是在6809加的),所以你必須要落實在自己的部門(或者,如果你不關心速度,只是重複減去除數,直到結果小於除數,這就是你的餘數)。

要只圖餘數(不分工)實際上是二進制很簡單:

  1. 移位除數離開,直到它的更大的股息
  2. 轉變是正確的一個地方
  3. 如果是這樣的小於分紅,從分紅中扣除
  4. 重複第2步和第3步,直到剩餘的分紅小於除數
  5. 這就是您的餘數

例如,讓我們的身影,其餘分127 9.之後我們開始通過移動9左:

127 = 0111 1111 
9 = 0000 1001 

左移,直到你得到:

0111 1111 
    1001 0000 

多次移位和減:

 0111 1111 
-  0100 1000 
=  0011 0111 

     0011 0111 
-  0010 0100 
=  0001 0011 

     0001 0011 
-  0001 0010 
=  0000 0001 

由於1小於9,所以我們有餘數:1.如果你想檢查,9x14 = 126。

+0

這可能是最簡潔的我見過一步分頻器(當然,模數)來描述。這很有趣,我有多少次實現自己的功能(各種ARM引導程序) - 我可以再回到這個作爲未來的參考! – 2011-03-04 06:41:52

-4

易於使用68K

#include <iostream> 
using namespace std; 
int main() 
{ 

    {cout << "THE MULTIPLES OF THREE FROM 1-30 ARE: " <<endl; 
    int a; 
    int sum =0; 
    for (a=1; a<=30; a++) 
    {if ((a%3) == 0) 
    {cout <<a << "\n" <<endl; 
    sum =sum+a; 
    }} 
    cout <<"\tSUM = " <<sum<<endl; 
    } 
    system ("Pause"); 
    return 0; 
} 
+0

這不回答問題。樓主問的6800(僅兩個零)組裝的解決方案,而不是在C++爲68000如果你有你應該張貼它作爲自己的問題的新問題。 – 2015-06-07 15:02:13