Использ. команды сдвига
00000100 = 4
сдвиг
00001000 = 8
00010000 = 16
при сдвиге влево происходит умножение на 2: Aрез. = А исх. * 2N
N – число сдвигов
Рез – т будет правильный, если не произошёл перенос из старшего разряда
00001000 = 8
00000100 = 4
00000010 = 2
т. е. при сдвиге вправо происходит деление на 2: Арез. = Аисх / 2N
00001001 = 9
® сдвиг через перенос
У = х * 6 = 4 * х + 2 * х
У = 10 * х = 8 * х + 2 * х
У = 6,5 * х = 4 * х + 2 * х + х / 2
Пример: исходное однобайтное число поступает в порт. Надо * 6,5 и записать в память
IPORT – адрес порта ввода
SAVE – адрес яч. памяти
IN IPORT ; ( A ) x
MOV C, A ; ( C ) X
RLC ; ( A ) = 2 * x
MOV B, A ; ( B ) 2 * x
RLC ; ( A ) = 4 * x
ADD B ; ( A ) = ( A ) + ( B ) = 6 * x
MOV B, A ; ( B ) = 6 * x
ORA A ; ( CY ) 0
MOV A, C ; ( A ) ( C ) = x
RAR ; сдвиг вправо ( А ) = х / 2
ADD B ; ( A ) ( A ) + ( B ) = 6.5 * x
STA SAVE ; запомнить
Число должно быть меньше 255 !
Упакованный формат удобен для хранения чисел в памяти, но не удобен для ввода и вывода чисел.
Неупакованный формат

Преобразование десятичного числа из неупаков. Формата в упаков. наз. упаковкой десятичн. чисел.
Обратное преобразование наз. распаковкой десятичн. чисел.
