Консультация № 181030
29.11.2010, 22:25
0.00 руб.
0 3 1
Здравствуйте, уважаемые эксперты! Прошу Вас, помогите с такой задачей:

ОБЩАЯ ФОРМУЛИРОВКА ЗАДАЧИ для вариантов 1-20. В заданой 16-битной
двоичной последовательности выделены 4 группы бит - 3 группы по 5 бит
и одна из 1-го бита.
ПЕРЕСТАВИТЬ 5-битные группы в соответствии с заданным вариантом.
Положение группы из 1-го бита задается вариантом и при перестановках
5-битных групп остается неизменным. В каждом варианте указан номер рисунка
с распределением групп и требуемый порядок групп после их перестаноки.

16 разрядная последовательность
хххххххххххххххх
----- ***** ? .....
1гр. 2гр. 4 3 гр.
после перестановки:
3 2 1

Основная программа в паскале, обработка - в файле .obj. Процессор 286й.
Переставлять группы надо в числе введенном с клавиатуры в десятичной форме.
Заранее большое спасибо.

Обсуждение

давно
Посетитель
7438
7205
30.11.2010, 16:59
общий
это ответ
Здравствуйте, Посетитель - 348444!
Легко! Вот Вам программка на ассемблере. С программой на Паскале, полагаю, справитесь сами
Программка несложная, думаю, разберетесь сами
Код:
;     	Подключение 	{$L chbits} { подключение файла chbits.obj } 
; Описание function ChBits(:integer):integer;external;
; Вызов i:=ChBits(i);
; Функция меняет местами пять крайних бит :)
.model large,pascal
.code
.286
public ChBits
ChBits proc near n:word ;параметр - слово
mov ax, n ;читаем слово
mov cx, ax ;сохраняем в cx
and cx, 0000011111100000b ;оставляем неизменные биты
and ax, 1111100000011111b ;биты, которые меняются
xchg al, ah ;обмениваем al с ah
shl ah, 3 ;подвигаем биты на край
shr al, 3 ;и в этом байте тоже
or ax, cx ;объединяем с неизменными битами
ret ;результат в ax
endp
end
5
Всё очень понятно и наглядно, большое спасибо!
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
7438
7205
30.11.2010, 17:03
общий
Кстати, команда
and ax, 1111100000011111b
лишняя, т.к. команды shl и shr задвигают нули
Оставил для облегчения понимания
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Неизвестный
01.12.2010, 00:18
общий
Огромное вам спасибо Игорь Витальевич!
Форма ответа