2

如何在摩托罗拉 M6800 的汇编中获取一个数字的 mod,例如 a%9。请告诉我应该使用哪些助记符。

4

2 回答 2

11

最后,如果记忆服务,6800没有除法指令(在6809中添加了IIRC),所以你必须自己实现除法(或者,如果你不关心速度,只需减去除数重复,直到结果小于除数,这就是你的余数)。

只计算余数(没有除法)实际上在二进制中很容易:

  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。

于 2011-03-04T04:48:50.537 回答
-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;
}
于 2015-06-07T14:00:36.867 回答