我遇到这个困难,没有运气,也不会感激任何帮助!!感谢
汉明码是一种用于编码和解码信息以启用错误检测和纠正的特殊技术。理查德汉明在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
答案 0 :(得分:0)
简单的答案是使用查找表(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