Как мне взять мод номера в сборке в Motorola M6800 - PullRequest
2 голосов
/ 04 марта 2011

Как мне взять мод числа, например,% 9 в сборке в Motorola M6800. Скажите, пожалуйста, какую мнемонику мне следует использовать.

Ответы [ 2 ]

11 голосов
/ 04 марта 2011

Наконец, если память служит, у 6800 нет инструкции деления (IIRC, которая была добавлена ​​в 6809), поэтому вам придется реализовать деление самостоятельно (или, если вас не волнует скоростьпросто несколько раз вычтите делитель, пока результат не станет меньше делителя, и это ваш остаток).

Просто вычислить остаток (без деления) на самом деле довольно просто в двоичном виде:

  1. сдвиг делителя влево до тех пор, пока он не станет больше, чем дивиденд2 и 3, пока то, что осталось от дивиденда, не станет меньше делителя
  2. Это ваш остаток

Например, давайте подумаем остаток после деления 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, мы имеемremainder: 1. Если вы хотите это проверить, 9x14 = 126.

0 голосов
/ 07 июня 2015

используя easy 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;
}
...