如何在摩托罗拉 M6800 的汇编中获取一个数字的 mod,例如 a%9。请告诉我应该使用哪些助记符。
问问题
2991 次
2 回答
11
最后,如果记忆服务,6800没有除法指令(在6809中添加了IIRC),所以你必须自己实现除法(或者,如果你不关心速度,只需减去除数重复,直到结果小于除数,这就是你的余数)。
只计算余数(没有除法)实际上在二进制中很容易:
- 将除数左移,直到它大于被除数
- 右移一个地方
- 如果这小于股息,请从股息中减去
- 重复步骤 2 和 3,直到剩下的被除数小于除数
- 那是你的余数
例如,让我们计算 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 回答