ВУЗ:
Составители:
38
Простейшие преобразования
Преобразование унитарного кода в двоичный позиционный. Двоичный эквивалент
унитарного кода равен номеру бита, в котором находится единственная единица. Поэтому
преобразование унитарного кода в двоичный позиционный удобно осуществлять путем
сдвига исходного унитарного кода в сторону младших бит с одновременным подсчетом
числа сдвигов. При "выдвигании" из младшего бита значения 1 сдвиги прекращаются, а в
счетчике сдвигов будет содержаться двоичный эквивалент унитарного кода.
Преобразования двоичного позиционного кода в унитарный. Необходимость такого
преобразования возникает, например, при выборке одного из исполнительных устройств,
мультиплексирующих шину BUS (Р0) по его номеру.
Пусть, например, требуется преобразовать 3-битный двоичный код из регистра R4 в 8-
битный унитарный:
; Версия
для МК 48
DECODE: CLR A ; Сброс аккумулятора
CLR C ; Сброс флага переноса
CPL C ; Установка флага переноса
ROTATE: RLC A ; Сдвиг унитарного кода
DJNZ R4,ROTATE ; Декремент и цикл, пока
; не ноль
Преобразование осуществляется путем "вдвигания" единицы из флага переноса.
Результат формируется в аккумуляторе за N сдвигов (где N — эквивалент исходного
двоичного кода). Недостатком приведенной программы является то, что для преобразования
N=0
понадобится 256 сдвигов. Избежать этого можно, модифицировав программу DECODE
следующим образом:
DECODE: INC R4 ; Инкремент исходного кода
MOV A,80H ; Установка старшего бита
; аккумулятора
ROTATE: RL A ; Сдвиг унитарного кода
DJNZ R4,ROTATE ; Декремент позиционного кода,
; и цикл, пока не 0
Преобразование в этом случае осуществляется за N+1 сдвигов.
Страницы
- « первая
- ‹ предыдущая
- …
- 36
- 37
- 38
- 39
- 40
- …
- следующая ›
- последняя »