/контр.0И4И3И2К3И1К2К1
Згідно виразів (5) контрольні біти визначаються за формулами:
;
; (8)
.
Для більшої наочності перепишемо вираження (8) у прив'язці до інформаційних і контрольним бітам:
,
, (9)
.
Оскільки у вихідних даних повідомлення мають вигляд (таблиця 2), то для формування коду Хеммінга буде потрібно перенесення інформаційних біт в інші розряди.
Таблиця 2 - Представлення вихідних даних
Разряд76543210Битx8x7x6x5x4x3x2x1Инф.И1И2И3И40000
Біт необхідно перенести з восьмої позиції в третю, біт необхідно перенести з сьомої позиції в п'ятому, біт необхідно перенести з п'ятої позиції в сьому.
Таким чином, необхідно виконати наступне перетворення:
Зробимо розробку програми формування коду Хеммінга в відповідності з перерахованими перетвореннями.
. Блок-схема програми
3. Текст програми мовою Асемблер
. include «m128def.inc»
. cseg; директива. cseg визначає початок сегмента коду
. org 0946; директива. org встановлює вказану адресу в лічильник командR23, 0xFFDDRB, R23; ініціалізація порту B на виводR23, 0x00DDRA, R23; ініціалізація порту А на введення: R23, PINA; запис в регістр R23 вихідного повідомлення з порту А0x0944, R23; запис вихідного повідомлення в осередок ОЗУR16, R23; запис вихідного повідомлення в регістр R16R16, 0x80; виділення першого інформаційного бітаR17, R23; запис вихідного повідомлення в регістр R17R17, 0x40; виділення другого інформаційного бітаR17; зрушення вліво другого інформаційного біта в старший разрядR18, R23; запис вихідного повідомлення в регістр R18R18, 0x20; виділення третього інформаційного бітаR18R18; зрушення вліво третього інформаційного біта в старший разрядR19, R23; запис вихідного повідомлення в регістр R19R19, 0x10; виділення четвертого інформаційного бітаR19R19R19; зрушення вліво четвертого інформаційного біта в старший разрядR20, R16; запис першого інформаційного біта в регістр R20R20, R17R20, R19; обчислення першого контрольного бітаR21, R16; запис першого інформаційного біта в регістр R21R21, R18R21, R19; обчислення другого контрольного бітаR22, R17; запис другого інформаційного біта в регістр R22R22, R18R22, R19; обчислення третього контрольного біта
LSR R22R22R22
LSR R22; зрушення вправо третього контрольного біта в третій розряд
LSR R21R21R21
LSR R21R21R21; зрушення вправо другого контрольного біта в перший раз?? Отрута
LSR R20R20R20R20R20R20
LSR R20; зрушення вправо першого контрольного біта в нульовий разрядR19; зрушення вправо четвертого інформаційного біта в шостий разрядR18R18; зрушення вправо третього інформаційного біта в п'ятий разрядR17R17R17; зрушення вправо другого інформаційного біта в четвертий розряд
LSR R16R16R16 R16R16; зрушення вправо першого інформаційного біта в другій разрядR23, R16; запис першого інформаційного біта в регістр R23
OR R23, R17R23, R18R23, R19
OR R23, R20R23, R21R23, R22; формування коду Хеммінга (об'єднання інформаційних і контрольних бітів) 0x0945, R23; ...