Программирование на Ассемблере
DIVS.L ,Dn:Dn (68020+)
DIVUL.L ,Dn:Dn см. DIVSL.L ,Dn:Dn (68020)+
EXT Dn расширение знака (в случае .W - расширение байта до
слова, в случае .L - слова до слинного слова)
EXTB.L Dn расширение байта до длинного слова (68020+)
MULS ,Dn знаковое умножение регистра Dn на операнд (оба
множителя рассматриваются как 16-битные целые),
результат имеет размер длинного слова
MULS.L ,Dn то же, только делитель рассматривается как длинное
слово (68020+)
MULS.L ,Dn:Dn то же, только результат имеет размер 64 бита (68020+)
MULU ,Dn беззнаковое умножение, функционирует аналогично MULS
MULU.L ,Dn см. MULS.L ,Dn (68020+)
MULU.L ,Dn:Dn см. MULS.L ,Dh:Dl (68020+)
NEG изменение знака числа (вычетание из нуля)
NEGX изменение знака с вычитанием переноса
SUB ,Dn вычитание операнда из регистра данных
SUB Dn, вычитание регистра данных из
SUBA ,An вычитание из адресного регистра
SUBI #n, вычитание непосредственного операнда
SUBQ #n, быстрое вычитание 3-битовой константы
SUBX Dn,Dn вычитание регистра и переноса
SUBX -(An),-(An) вычитание в памяти с переносом (работает только с
предекрементной адресацией)
TST сравнить операнд с нулем и выставить флаги Обратите внимание на то, что для выполнения одной и той же операции может
существовать несколько команд в зависимости от способа адресации операндов
(например, ADD, ADDI, ADDA итд.). Однако ассемблер допускает записи типа
ADD D0,A0, автоматически подставляя подходящую команду (в данном случае
ADDA). Сказанное не относится к командам ADDQ и SUBQ: их надо указывать
явно (даже если непосредственный операнд умещается в 3 бита, ассемблер не
будет заменять ADD на ADDQ). Команды ADDQ и SUBQ выполняются с такой же
скоростью, что и операции над регистрами (четыре такта на MC68000 и до
двух тактов на MC68020), причем непосредственный операнд размещается в
первом (и единственном) слове кода команды.
|