格雷码,又称反射二进制码、循环二进制码。将二进制码转换成格雷码,是编码,反过来,是解码。下面阐述的是解码。先来说一下它的解码过程。
假设内存中有20个八位无符号格雷码,转换方法是:二进制码的最高位D7与格雷码的最高位G7相同,二进制码的其余位Dk(k=6,...,0)是二进制码的Dk+1(k=6,...,0)与格雷码Gk(k=6,...,0)异或的结果。
G7 = D7
G6 XOR D7 = D6
G5 XOR D6 = D5
.....
G0 XOR D1 = D0
也就是说要得到D6,必先得到D7;要得到D5,必先得到D6...。
现在我们可以描述程序的轮廓了。用AX寄存器低八位AL存放要转换的格雷码,BX寄存器低八位BL存放转换后的二进制码。AH、BH的最低位分别存放异或用的二进制位Dk和格雷码位Gk。
用汇编语言实现的转换过程如下:
MOV DI,OFFS