📄 cksum.lst
字号:
C51 COMPILER V8.02 CKSUM 01/11/2008 21:15:52 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE CKSUM
OBJECT MODULE PLACED IN CKSUM.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE CKSUM.c OPTIMIZE(9,SPEED) BROWSE DEBUG OBJECTEXTEND
line level source
1 /*
2 ;-------------------------------------------------------------------------
3 ; CKSUM.A51
4 ;
5 ; This computes the internet checksum on an 8051
6 ;
7 ; Call from C program: UINT cksum(UCHAR xdata * buf, UINT length);
8 ; Where * buf is pointer to first char (must be in xdata space)
9 ; and "length" is number of bytes (not words) to sum over
10 ;-------------------------------------------------------------------------
11 */
12 #include "net.h"
13
14 UINT cksum(UCHAR xdata *check,UINT length) //计算校验和
15 {
16 1 LONG sum=0;
17 1 UINT i;
18 1 UINT xdata *ptr;
19 1 ptr=(UINT xdata *)check;
20 1 for (i=0;i<(length)/2;i++)
21 1 {
22 2 sum+=*ptr++;
23 2 }
24 1 if (length&0x01)//表示长度为单数
25 1 {
26 2 sum=sum+((*ptr)&0xff00);
27 2 }
28 1 sum=(sum&0xffff)+((sum>>16)&0xffff);//高16位和低16位相加
29 1 if(sum&0xffff0000)
30 1 {//表示有进位
31 2 sum++;
32 2 }
33 1 return ( (UINT)((sum)&0xffff));
34 1 // return ( (UINT)(~((sum)&0xffff)));
35 1 }
36
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 192 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 8
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -