写一个程序,转换从键盘输入到等效的格雷码二进制数的8位二进制数,使用以下算法:
我正在学习程序集(8086,所需的类),不知道如何做到这一点。
我是否将每个字符(1或0)转换为从键盘接收的字符?或者,我读取整个8位二进制数字,循环访问,转换为我?
我来自Perl/Java,所以想象这将如何在汇编中工作有点令人生畏。另外,我不确定上述算法中的符号是什么?
谢谢你的帮助和批评!
写一个程序,转换从键盘输入到等效的格雷码二进制数的8位二进制数,使用以下算法:
我正在学习程序集(8086,所需的类),不知道如何做到这一点。
我是否将每个字符(1或0)转换为从键盘接收的字符?或者,我读取整个8位二进制数字,循环访问,转换为我?
我来自Perl/Java,所以想象这将如何在汇编中工作有点令人生畏。另外,我不确定上述算法中的符号是什么?
谢谢你的帮助和批评!
自从我编写了汇编代码以来,这已经很长时间了,但问题似乎更具哲理性。不知道这些更大的目标是一些想法。
转换输入的每个按键:程序运行时(即动态命令,上,下,左等等),程序需要多次响应各个按键。在这种情况下,击键应单独转换。其他时候,需要转换一块数据或字符串,并且此操作通常在输入键结束时完成是一个较大的数据块。这些情况要求字符被“循环”并转换。
但是,在任何一种情况下,“工作”都应该在通用的子程序中完成,可以从任何一种情况下调用子程序。
我希望这有助于
埃德
你可以简单的异或字符与自身向右移动一个地方,以获得灰色显示,没有循环需要。当您的字符在AL中时的示例:
mov bl, al
shr bl, 1
xor al, bl
AL现在是格雷码表示法。
在C,这将是:
c^=c>>1;
要返回二进制表示你可以用它自异或格雷码,右移通过降低功率为2的,从最大功率-of-2比该数据尺寸更小,例如:
mov bl, al
shr bl, 4
xor al, bl
mov bl, al
shr bl, 2
xor al, bl
mov bl, al
shr bl, 1
xor al, bl
在C,这将是:
c^=c>>4; c^=c>>2; c^=c>>1;
加在-A-圆是不含usive或(XOR)运算符。 – AakashM 2009-06-10 16:58:59