注册 登录
编程论坛 汇编论坛

[求助]一个有关奇偶校验的问题。

damofei 发布于 2006-11-01 20:07, 2867 次点击
在奇偶校验时,通常是按照下面的指令来实现,为什么要把字符和0相“或”,再用结果和7f相“与”,还有为什么要清楚校验位?

in al , 53h ;53h是输入字符所在的地址
or al , 0 ;校验
jpe no-error ;校验正确,转no-error程序
jmp error ;校验错误,转 error程序
and al , 7fh ;清除校验位
18 回复
#2
菜鸟上路2006-11-01 20:54
我认为 OR 在这的作用只是进一步确认AL中的内容,相当于保险的作用,关键是JPE这条指令(这才是判断奇偶的).
JPE指令是根据奇偶标志位PF进行转移的指令.
AND的作用与OR类似,但是我不懂为什么与7FH与,而不与FFH与.
#3
damofei2006-11-02 19:17

奇偶校验位是指AL的最高位吗?如果是的话,要清除它则要和7FH相“与”,而不是FFH
至于为什么要删除它,我想,是计算机中的ASCII码用七位二进制表示的缘故吧!你说呢?

#4
菜鸟上路2006-11-02 19:26
ASCII不是八位二进制表示吗?
#5
damofei2006-11-02 19:53

是啊,我也很纳闷,书上的输入输出一章是这么讲的,是不是我的理解有误,但不这样解释,没有别的理由啊,那样做。你认为呢?

#6
菜鸟上路2006-11-02 22:14
你书上讲ASCII用7位表示?
#7
damofei2006-11-03 18:41
是啊,《微机原理与汇编语言》潘峰著,在输入输出一章,不知道为什么这么讲,可以的话,你也看看,没准儿你能知道怎么回事?
#8
菜鸟上路2006-11-03 20:56
这我也不懂了,你老师是怎么讲的呢?
#9
wchx2152006-11-04 12:56
ASCill是用7位表示呀!总共有128个,而且最高位为0!!
#10
wchx2152006-11-04 13:12

与0相或主要是影响P标志,因为in指令是不影响P标志的!
当用一个字节表示一个字符的ASCIll时,其最高位(位7)通常为0.在数据传送过程中,特别是远距离传送,为了可靠传送,对一个字符常用的检验方法为奇偶检验,就是用最高位为校验位。
若采用偶检验,检查 ASCill中“1”的个数,若为偶,则令它的最高位为“0”,否则为“1”。

#11
wchx2152006-11-04 13:15
最后,校验完了,要返回表示ascill,必须把最高位清“0”,返回到原来状态!
#12
菜鸟上路2006-11-04 13:26
以下是引用wchx215在2006-11-4 12:56:02的发言:
ASCill是用7位表示呀!总共有128个,而且最高位为0!!

不对啊

#13
wchx2152006-11-04 13:32
是7位,只不过得用字节来表示,但最高位都是是0呀!至于最高位是1的是扩充的ascill,我们平常用的都是7位的!
#14
菜鸟上路2006-11-04 13:32
从179以后的ASCII都是制表符
#15
菜鸟上路2006-11-04 13:35
以下是引用wchx215在2006-11-4 13:32:11的发言:
是7位,只不过得用字节来表示,但最高位都是是0呀!至于最高位是1的是扩充的ascill,我们平常用的都是7位的!

原来是这样啊

#16
damofei2006-11-04 15:08
以下引用wchx215的发言:
若采用偶检验,检查 ASCill中“1”的个数,若为偶,则令它的最高位为“0”,否则为“1”。
我认为:若采用偶校验,则所有位(包括校验位)中,“1”的个数为偶就行了,不一定校验位为“1”。
#17
菜鸟上路2006-11-04 15:13
以下是引用damofei在2006-11-4 15:08:51的发言:
以下引用wchx215的发言:
若采用偶检验,检查 ASCill中“1”的个数,若为偶,则令它的最高位为“0”,否则为“1”。
我认为:若采用偶校验,则所有位(包括校验位)中,“1”的个数为偶就行了,不一定校验位为“1”。

最高位就是标志"1"的个数是偶数还是奇数的,请再看下10楼的阐述

#18
damofei2006-11-04 15:31

那你看看下面的这道题:

某数据的7 位编码为0010101,若在其中最高位之前加一位偶校验位,则编码为(10010101)

我的看法是:
这个编码中含三个“1”所以要采用偶校验,就必须置最高位既校验位为“1”,这样才符合偶校验的定义,你认为呢?


#19
菜鸟上路2006-11-04 16:30

是这样的

1