МИКРОКОНТРОЛЛЕРЫ СЕМЕЙСТВА 8051 - Script

Команда «DAA» не производит преобразование байта, представленного в шестнадцатиричном коде, в BCD-число.

Команда «mul AB» (команда 12.23) перемножает два 8-разрядных числа, которые находятся в аккумуляторе и регистре В. Полученный 16-разрядный результат сохраняется в аккумуляторе (младший байт) и регистре В (старший байт). Умножение происходит довольно быстро и может быть использовано для обработки с помощью 8051 сигналов звуковой частоты, то-есть для реализации функций DSP (digital signal processing). Если команда «mul AB» используется для умножения 16-разрядных чисел, то для получения правильного результата используется следующая формула:

Result = (VarB * VarC) + ((VarB+1 * VarC) * 0100h) +

((VarB * VarC+1) * 0100h ) + ((VarB+1 * VarC+1) * OlOOOOh)

где «VarB» и «VarC» две 16-разрядные переменные, которые необходимо перемножить. Эта формула гарантирует получение правильного 32-разрядного результата. Ее можно довольно просто реализовать на ассемблере. Умножение на OlOOh или OlOOOOh осуществляется путем сдвига результата на 8 или 16 бит.

Команда «div AB» (команда 12.24) выполняет деление содержимого аккумулятора на содержимое регистра «В». Частное помещается в А, остаток — в В. Эта команда весьма полезна при преобразовании данных. Например, преобразование байта в трехзначное десятичное число может быть выполнено следующим образом:

Go to Top