⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hash.lst

📁 用于GPRS远程电力抄表系统中采集器端的程序
💻 LST
字号:
C51 COMPILER V7.50   HASH                                                                  07/19/2006 10:05:12 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE HASH
OBJECT MODULE PLACED IN hash.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE hash.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include "hash.h"
   2          
   3          static code U32  box[] = 
   4          {
   5              0x9dad7287, // 0x000    
   6              0xb1cf8e83, // 0x010    
   7              0x7ea820c4, // 0x020     
   8              0x99404a66, // 0x030     
   9              0x4f481d45, // 0x040    
  10              0x32889d2c, // 0x050    
  11              0x698c0cca, // 0x060    
  12              0xfd6d6e31, // 0x070     
  13              0xefb10c53, // 0x080    
  14              0x2092bd13, // 0x090    
  15              0x2672c073, // 0x0a0     
  16              0x378453a7, // 0x0b0    
  17              0x3ff6d550, // 0x0c0     
  18              0x06316131, // 0x0d0     
  19              0xe94aeb76, // 0x0e0     
  20              0x54c1f029, // 0x0f0     
  21              0x58872a69, // 0x100    
  22              0x720a1dc3, // 0x110      
  23              0x006662b6, // 0x120    
  24              0x3b14d84f, // 0x130     
  25              0x810f23bb, // 0x140    
  26              0xa6c5e650, // 0x150    
  27              0xcb5b3089, // 0x160     
  28              0x7f38d0ee, // 0x170     
  29              0xc7922c20, // 0x180    
  30              0xa6c0496d, // 0x190     
  31              0x1b4c67f2, // 0x1a0     
  32              0x20211e44, // 0x1b0     
  33              0x80f594f9, // 0x1c0    
  34              0x389b1bbf, // 0x1d0    
  35              0xae8b5fcf, // 0x1e0    
  36              0xda30d0fb  // 0x1f0    
  37          };
  38          
  39          U8 Hash(U8 tl,U8 th,U8 *addr,U8 const len)
  40          {
  41   1      
  42   1              static U8 xdata box_area1[32];
  43   1              static U8 xdata box_area2[32];
  44   1              static U8 xdata box_area3[32];
  45   1      
  46   1              static U8 i,j,k;
  47   1              static U32 cnt=0;//0xFFdc8fe1; //计数器
  48   1              static LENFLAG=0;
  49   1      
  50   1              U16 ntl=0;
  51   1              U16 nth=0;
  52   1              U32 naddr=0;
  53   1              U32 rval;
  54   1       
  55   1              int m,n;
C51 COMPILER V7.50   HASH                                                                  07/19/2006 10:05:12 PAGE 2   

  56   1        
  57   1      
  58   1              for(n=0;n<3;n++)
  59   1                      naddr=(naddr<<8)+addr[n];
  60   1       
  61   1              if(LENFLAG!=len)
  62   1              {
  63   2                      LENFLAG=len;
  64   2                      for(n=1;n<=31;n++)
  65   2                      {
  66   3                              box_area1[n]=(len+cnt+n)%31;
  67   3                              box_area2[n]=(len+cnt+n)%31;
  68   3                              box_area3[n]=(len+cnt+4*n)%31;
  69   3                      }
  70   2              }
  71   1      
  72   1      
  73   1       //获取下标
  74   1              switch(tl%3)
  75   1              { 
  76   2                      case 0:
  77   2                              i=box_area1[(cnt^(~j))%31];
  78   2                              break;
  79   2                      case 1:
  80   2                              i=box_area2[(cnt^(~j))%31];
  81   2                              break;
  82   2                      case 2:
  83   2                              i=box_area3[(cnt^(~j))%31];
  84   2              }
  85   1      
  86   1              switch(th%3)
  87   1              { 
  88   2                      case 0:
  89   2                              j=box_area1[(cnt^(~i))%31];
  90   2                              break;
  91   2                      case 1:
  92   2                              j=box_area2[(cnt^(~i))%31];
  93   2                              break;
  94   2                      case 2:
  95   2                              j=box_area3[(cnt^(~i))%31];
  96   2              }
  97   1      
  98   1              switch(naddr%3)
  99   1              { 
 100   2                      case 0:
 101   2                              k=box_area1[(cnt+k)%31];
 102   2                              break;
 103   2                      case 1:
 104   2                               k=box_area2[(cnt+k)%31];
 105   2                              break;
 106   2                      case 2:
 107   2                              k=box_area3[(cnt+k)%31];
 108   2              }
 109   1      
 110   1              ntl=tl&0xFFFFFFFF;
 111   1              nth=th&0xFFFFFFFF;
 112   1              m=8;
 113   1              do{
 114   2                      ntl|=~(ntl<<m+j);
 115   2                      nth|=~(nth<<m+i);
 116   2                      naddr|=~(naddr<<m+k);
 117   2                      m-=8;
C51 COMPILER V7.50   HASH                                                                  07/19/2006 10:05:12 PAGE 3   

 118   2              }while(m>=0);
 119   1      
 120   1       
 121   1      
 122   1              rval=(ntl^box[i+(ntl&0x20)]);
 123   1              rval+=(nth^box[j+(nth&0x20)]);
 124   1              rval+=(naddr^box[k+(naddr&0x20)]);
 125   1      
 126   1      
 127   1              cnt++;
 128   1      
 129   1              if(!(rval&len))
 130   1                      return len;
 131   1                      
 132   1              if(!(rval%len))
 133   1                      return rval&len;
 134   1      
 135   1              return rval%len;
 136   1      }
 137          
 138          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1159    ----
   CONSTANT SIZE    =    128    ----
   XDATA SIZE       =     96    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      9      20
   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 + -