8086程序用c语言写,AVR单片机汇编语言程序实例

;范例    快速生成位序列校验码/或对接收位序列进行循环冗余检测子程序    ;100字节位序列m0,m1,m2,m3,m4,。。。m98,m99在发送方以递推方式生成CRC校验码子程序    ;或在接收方对该序列进行CRC检测之子程序    ;在发送方,本程序为CRC校验码生成子程序。

将此位序列除以生成多项式P(X)    ;=X16 X15 X2 1,将生成的CRC校验码(即余式)装入位序列的最低两位字节       ;(冲掉m0,m1),将最终处理的位序列发送出去。    ;在接收方,本程序为CRC检测子程序。将接收到的位序列除以生成多项式P(X)    ;=X16 X15 X2 1,若将原位序列最低两位字节m0,m1恢复(即除得的余式R15R14       ;与原始位序列最高两位字节相等),则为正确接收。

;本程序中循环次数为98,比位序列字节数少2。因为位序列最低两个字节m0,m1直       ;接作为(第一个)余式,不对它们查取CRC校验码。            ;X为按字节寻址位序列指针    ;寻址CRC校验码表格先按字计算地址指针,将其增倍后变为按字节寻址。

CRCOUT:LDI  XH,$1            ;THE BIT SEQUENCE IS IN $100---$163    CLR XL               ;TOTAL  100 BYTES    LDI R16,$62          ;THE DATA BLOCK  LENGTH IS  98(=100-2)    LD R14,X            ;m0    LD  R15,X            ;m1CRCO1:LD    R13,X            ;fetch m2 at the first!      LDI   ZH,HIGH(DATA5)      LDI   ZL,LOW(DATA5)      ADD   R30,R13      CLR   R13      ADC   R31,R13           LSL   R30      ROL   R31               ;point to the CRC CODE!      LPM            EOR   R14,R0      ADIW  R30,1      LPM         EOR   R15,R0           ;CRC CODE IN R14&R15(HIGH)!      DEC   R16      BRNE  CRCO1         STS    $101,R15      STS    $100,R14          ;将生成的CRC校验码放在位序列的最低两位字节中      RET                     ;或将原始位序列的最低两位字节恢复DATA5:。

DB  $00,$00,$80,$05     ;THE CRC CODE TABLE      。DB  $80,$0F,$00,$0A     ;与范例101中SRAM$100--$2FF单元内容完全相同!      。DB  $80,$1B,$00,$1E    ;。

。。。。。。。。。。。。。。。。。。。  ;其余略       end 我这有很多!我发到你邮箱里吧!。

全部

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值