home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 September / Chip_2002-09_cd1.bin / zkuste / delphi / kompon / d123456 / STR_BIT.ZIP / 16 / SUM_ED.ASM < prev    next >
Assembly Source File  |  1999-11-25  |  2KB  |  54 lines

  1. code         segment
  2.              ASSUME  cs:CODE,ds:NOTHING
  3. ; Function  TStr_Bit.Kol_ed : word;
  4. ; Åp«µÑñπpá »«ñßτ¿ΓδóáÑΓ ¬«½¿τÑßΓó« 1 í¿Γ ó í¿Γ«ó«⌐ ßΓ᫬Ñ
  5. ; ¬«Γ«pá∩ ß«ñÑpª¿Γ KOL í¿Γ
  6. Mis       equ   DWORD PTR ss:[bp+6]
  7. ;
  8. TStr_Bit@Kol_ed       PROC  FAR
  9.                       PUBLIC  TStr_Bit@Kol_ed
  10.              push    bp
  11.              mov     bp,sp
  12.              push    ds
  13. ;
  14.              lds     si,Mis    ; ÇñpÑß ßΓpπ¬Γπpδ ñá¡¡δσ "í¿Γ«óá∩ ßΓp«¬á"
  15.              mov     ax,[si]   ; ñ½¿¡á í¿Γ«ó«⌐ ßΓp«¬¿
  16.              lds     si,[si+6] ; ÇñpÑß í¿Γ«óδσ ñá¡¡δσ ó ßΓp«¬Ñ
  17.              mov     bx,ax
  18.              mov     cl,3
  19.              shr     ax,cl
  20.              add     si,ax   ; áñαÑß ¬«¡µá ¼áßß¿óá
  21.              inc     ax      ; ¬«½-ó« µ¿¬½«ó «íαáí«Γ¬¿
  22.              mov     cl,8
  23.              and     bl,7
  24.              sub     cl,bl   ; ¬«½-ó« í¿Γ «ßΓáΓ¬á
  25.              mov     bl,[si] ; íá⌐Γ ß ¬«¡µá ßΓ᫬¿ í¿Γ
  26.              shl     bl,cl   ; πñá½Ñ¡¿Ñ '½¿Φ¡¿σ' í¿Γ
  27.              xor     bh,bh
  28.              mov     cx,ax
  29.              xor     ax,ax
  30.              jmp  short n_v
  31. Povt:
  32.              mov     bl,[si]
  33. n_v:         dec     si
  34.              shr     bl,1      ; æ«¬páΘáѼ «íΩ±¼ Γáí½¿µδ ñѬ-∩
  35.              mov     bl,byte ptr cs:[bx + offset kod]
  36.              adc     ax,bx
  37.              loop    Povt
  38. ;
  39.              pop     ds        ; ÉѺπ½∞ΓáΓ ó«ºópáΘáÑΓß∩ τÑpѺ Çò
  40.              pop     bp
  41.              ret     4
  42. TStr_Bit@Kol_ed  endp
  43. ;
  44. kod         db       0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4    ; 0
  45.             db       1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5    ; +1
  46.             db       1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5    ; +1
  47.             db       2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6    ; +2
  48.             db       1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5    ; +1
  49.             db       2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6    ; +2
  50.             db       2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6    ; +2
  51.             db       3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7    ; +3
  52. CODE        ends
  53.             end
  54.