crc校验程序源代码_第1页
crc校验程序源代码_第2页
crc校验程序源代码_第3页
crc校验程序源代码_第4页
crc校验程序源代码_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、程序源代码disp macro m lea dx,m mov ah,9 int 21hODH endm:显示字符的宏定义stack1 segment para stack stack db 200 dup (0)stack1 endsdata1 segmentstr0 DB OAH,ODH,*Sstr1 DB 0AH,0DH * *Sstr2 DB 0AH,0DH, * NNNNNNNNN s NNNNNNNNNNNNNNNNNNNN *$str3 DB 0AH,0DH, * DNBNN=- zNNN- (NNNNKsNNNNz- *$str4 DB 0AH,0DH, * =NNNB sNNN

2、 zNNN= NNNN+*Sstr5 DB 0AH,0DH, * BNNN< zNNN +NBN= zNBNz*Sstr6 DB 0AH,0DH, * NND sNNN hNNN( BNNN-*Sstr7 DB 0AH,0DH, * -NBN zNNN- +NNND NNND*Sstr8 DB 0AH,0DH, * sNNN< zNNNhzzDNNNB <NNNz *Sstr9 DB 0AH,0DH, * zNBN< zNNNNNNNBBz- <NNNz*SStr10 DB 0AH,0DH, * sNNN+ zNNNNNNNND <NNNz*SStr11 D

3、B 0AH,0DH, * =NNNz zNNN=<sNNND (NNNB*SStr12 DB 0AH,0DH, * <NNNB sNBN- =NNNhNNNN( *SStr13 DB 0AH,0DH, * BBNNz sNNN DNNN+ hNNND*SStr14 DB 0AH,0DH, * =NNNNs zNNN NNN- NNND-*SStr15 DB 0AH,0DH, * NNNNNNNNNN sNNN BNBNKNNNNNNNNNN *SStr16 DB 0AH,0DH *SStr17 DB 0AH,0DH,*SStr18 DB 0AH,0DH, *SStr19 DB 0A

4、H,0DH, * Press s to start the programme*SStr20 DB 0AH,0DH, * Press q to quit the programme*SStr21 DB 0AH,0DH, * Press c to clear the programme*SStr22 DB 0AH,0DH, * Cyclic Redundancy Check Programme BULID BY tl*SStr23 DB 0AH,0DH,*S:LOGO及提示Str_enter db 0ah,0dh,$Crc16 table label word :00h dw 00000h, 0

5、C0C1h, 0C181h, 00140h, 0C301h, 003C0h, 00280h, 0C241h dw 0C601h, 006C0h, 00780h, 0C741h, 00500h, 0C5C1h, 0C481h, 00440h dw 0CC01h, 00CC0h, 00D80h, 0CD41h, 00F00h, 0CFC1h, 0CE81h, 00E40h dw 00A00h, 0CAC1h, 0CB81h, 00B40h, 0C901h, 009C0h, 00880h, 0C841h : 20hdw 0D801B, 018C0H, 01980H, 0D941H, 01B00H,

6、0DBC1H, 0DA81H, 01A40H dw 01E00H, 0DEC1H, 0DF81H, 01F40H, 0DD01H, 01DC0H, 01C80H, 0DC41H dw 01400H, 0D4C1H, 0D581H, 01540H, 0D701H, 017C0H, 01680H, 0D641H dw 0D201H, 012C0H, 01380H, 0D341H, 01100H, 0D1C1H, 0D081H, 01040H : 40hdw 0F001H, 030C0H, 03180H, 0F141H, 03300H, 0F3C1H, 0F281H, 03240H dw 03600

7、H, 0F6C1H, 0F781H, 03740H, 0F501H, 035C0H, 03480H, 0F441H dw 03C00H, 0FCC1H, 0FD81H, 03D40H, 0FF01H, 03FC0H, 03E80H, 0FE41H dw 0FA01H, 03AC0H, 03B80H, 0FB41H, 03900H, 0F9C1H, 0F881H, 03840H: 60hdw 02800H, 0E8C1H, 0E981H, 0294OH, 0EB01H, 02BC0H, 02A80H, 0EA41H dw 0EE01H, 02EC0H, 02F80H, 0EF41H, 02D00

8、H, 0EDC1H, 0EC81H, 02C40H dw 0E401H, 024C0H, 02580H, 0E541H, 02700H, 0E7C1H, 0E681H, 02640H dw 02200H, 0E2C1H, 0E2C1H, 0E381H, 02340H, 0E101H, 021COH, 02080H, 0E041H: 80hdw 0A001H, 060C0H, 06180H, 0A141H, 06300H, 0A3C1H, 0A281H, 06240H dw 06600H, 0A6C1H, 0A781H, 06740H, 0A501H, 065C0H, 06480H, 0A441

9、H dw 06C00H, 0ACC1H, 0AD81H, 06D40H, 0AF01H, 06FC0H, 06E80H, 0AE41H dw 0AA01H, 06AC0H, 06B80H, 0AB41H, 06900H, 0A9C1H, 0A881H, 06840H:A0hdw 07800H, 0B8C1H, 0B981H, 07940H, 0BB01H, 07BC0H, 07A80H, 0BA41H dw 0BE01H, 07EC0H, 07F80H, 0BF41H, 07D00H, 0BDC1H, 0BC81H, 07C40H dw 0B401H, 074C0H, 07580H, 0B54

10、1H, 07700H, 0B7C1H, 0B681H, 07640H dw 07200H, 0B2C1H, 0B381H, 07340H, 0B101H, 071C0H, 07080H, 0B041H:C0hdw 05000H,090C1H,09181H,05140H,09301H,053C0H,05280H,09241Hdw 09601H,056C0H,05780H,09741H,05500H,095C1H,09481H,05440Hdw 09C01H,05CC0H,05D80H,09D41H,05F00H,09FC1H,09E81H,05E40Hdw 05A00H,09AC1H,09B81

11、H,05B40H,09901H,059C0H,05880H,09841H:E0hdw 08801H,048C0H,04980H,08941H,04B00H,08BC1H,08A81H,04A40Hdw 04E00H,08EC1H,08F81H,04F30H,08D01H,04DC0H,04C80H,08C41Hdw 04E00H,084C1H,08581H,04540H,08701H,047C0H,04680H,08641Hdw 08201H,042C0H,04380H,08341H,04100H,081C1H,08081H,04040H;CRC16 TABLEdata_buf DB 200

12、dup(?),$crc dw ?len dw ?info db 0AH,0DH,The CRC Code is : $info_input db 0AH,0DH,Please input the string :$data1 endscode segmentassume cs:code,ds:data1,ss:stack1STARTMain proc fardisplay_logmov ax,data1mov ds,axdisp str0disp str1disp str2disp str3disp str4disp str5disp str6disp str7disp str8disp st

13、r9disp str10disp str11disp str12disp str13disp str14disp str15disp str16disp str17disp str18disp str19disp str20disp str21disp str22disp str23;显示LOGO及提示信息choose_function:mov ah,8int 21h;cmp al,sjz startp;为s则跳到startpcmp al,pjz quit;为q则跳到quitcmp al cjz clear;为c则跳到cleardisp str_error否则显示错误信息jmp display

14、_logstartp:disp info_input;提示输入call windows_main;调用windows_main开始计算jmp display_logclear:call clear_screen;调用clear_screen清屏jmp display_logquit: mov ah,4chint 21h;结束retmain endpclear_screen proc naer;清屏push axpush bxpush cxpush dxmov ah,6mov al,0mov ch,0mov cl,0mov dh,24mov dl,79mov bh,7int 10hmov dh,

15、1mov dl,1mov ah,2mov bh,0int 10hpop dxpop cxpop bxpop axretclear_screen endpwindows_main proc nearlea di,data_bufcall get_string ;调用get_string读取输入字符lea si,data_bufcall cal_len ;调用cal_len计算读取字符长度lea si,data_bufcall cal_crc16 ;调用cal_crc计算CRCdisp infomov bx,crccall Hex_Ascii ;调用Hex_Ascii转化成16进制cal:mov

16、ah,6hmov dl,0ffhint 21hcmp al,0dh;如果检测到回车则跳出jz exit2jmp calexit2:retwindows_main endp;查表法计算CRC;入口:DS:SI=buffer地址; CX buffer=长度 ; DX= CRC的初始值;出口:DX=CRCcal_crc16 proc nearpush cxpush dxmov cx,lenmov dx,0call crc16mov crc,dx;初始化入口出口pop dxpop cxretcal_crc16 endpcrc16 proc nearpush cxpush bxpush sicrc16_

17、loop:xor ax,axmov al,siinc sixor al,dlshl ax,1mov bx,axmov ax,bx+crc16_tablexor al dhmov dx,axdec cxjnz crc16_loop;查表pop sipop bxpop cxretcrc16 endpget_string proc near;读取字符串input:mov ah,1int 21hcmp al,0dhjz exit3mov di,alinc dijmp inputexit3:inc dimov DS:di,$retget_string endpcal_len proc nearpush bxpush axpush simov bx,0continue:mov al,sicmp al,$jz exit1inc siinc bxjmp continueexit1:mov len,bxpop sipop axpop bxretcal_len e

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论