Код Хэмминга EASy68k

У меня проблемы с этим, и мне не повезло, и я был бы признателен за любую помощь!! Спасибо

Код Хэмминга — это специальный метод кодирования и декодирования информации, позволяющий обнаруживать и исправлять ошибки. Ричард Хэмминг опубликовал свою работу в 1951 году. Высокая стоимость оборудования в прошлом делала этот метод дорогостоящим и, следовательно, непрактичным. На рынок была выпущена компьютерная конструкция CRAY, в которой используются методы исправления одиночных ошибок, описанные в статье Хэмминга.

Кодировать

Важной особенностью кода Хэмминга является то, что все компоненты алгоритма математически обоснованы и практичны. Процедура кодирования заключается в вычислении битов «четности» на основе передаваемой информации и отправке этих битов четности вместе с передаваемой информацией. Если информация содержит 4 бита (abcd), то необходимы три бита четности (rst). Эти биты четности называются контрольными битами. Затем закодированное сообщение структурируется следующим образом:

position    7   6   5   4   3   2   1
bit a   b   c   r   d   s   t

куда:

r is set to create even parity for bits 7, 6, 5 and 4;
s is set to create even parity for bits 7, 6, 3 and 2;
t is set to create even parity for bits 7, 5, 3 and 1.

Вы должны закодировать содержимое байта в памяти, где информационные биты a, b, c и d расположены, как показано ниже:

xxxxabcd

Например, предположим, что у вас есть следующая конфигурация памяти, ваша задача состоит в том, чтобы составить закодированные байты, как показано:

закодированное в памяти сообщение

2274    xxxx1011    01010101
2275    xxxx1001    01001100
2276    xxxx0011    00111110

person Kyle Knudson    schedule 17.03.2018    source источник


Ответы (1)


Простой ответ — использовать справочную таблицу (LUT) для кодирования (а также декодирования).

START:
        LEA     INPUT,A1
        LEA     OUTPUT,A2
        LEA     ENCODE,A0
ENCLOOP:
        MOVE.B  (A1)+,D0
        BMI.S   EXIT
        AND.W   #$0F,D0
        MOVE.B  (A0,D0.W),D1     ; encode byte
        MOVE.B  D1,(A2)+         ; save it
        BRA.S   ENCLOOP

EXIT:
        SIMHALT
        ; change table to match your Hamming scheme
ENCODE: DC.B $2E,$AD,$14,$97,$B2,$31,$98,$1B
        DC.B $E4,$67,$CE,$4D,$68,$EB,$52,$D1
INPUT:  DC.B $0B,$09,$03,$FF

OUTPUT: DS.B 3
person vogomatix    schedule 25.04.2018