home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 September / Chip_2002-09_cd1.bin / zkuste / delphi / kompon / d123456 / STR_BIT.ZIP / 16 / LINPR / BYBOR.ASM next >
Assembly Source File  |  1999-11-14  |  3KB  |  93 lines

  1. code            segment
  2.                 ASSUME  cs:CODE,ds:NOTHING
  3. ;
  4. ; Procedure Bybor(mis,mrez : pointer; Nbis,Hag,kol : word);
  5. ; Åp«µÑñπpá óδñѽ∩ÑΓ KOL í¿Γ ¿º ¼áßß¿óá ß áñpÑß«¼ MIS ß í¿Γá NBIS
  6. ; ß Φáú«¼ HAG ¿ ºá»¿ßδóáÑΓ ó ¼áßß¿ó MREZ
  7. ;
  8. Mis       equ   DWORD PTR ss:[bp+16]
  9. Mrez      equ   DWORD PTR ss:[bp+12]
  10. Nbis      equ   WORD PTR ss:[bp+10]
  11. Hag       equ   WORD PTR ss:[bp+8]
  12. Kol       equ   WORD PTR ss:[bp+6]
  13. ;
  14. Bybor           proc    Far
  15.                 PUBLIC  Bybor
  16.                 push    bp
  17.                 mov     bp,sp
  18.                 push    ds
  19.  
  20.                 lds     si,Mis                          ; Load 32 bit ptr
  21.                 les     di,Mrez                         ; Load 32 bit ptr
  22.                 cld
  23.                 mov     dx,Kol
  24.                 mov     ax,Nbis
  25.                 call    Ostat
  26.                 add     si,ax
  27.                 shr     cl,1                            ; Shift w/zeros fill
  28.                 mov     ch,cl                           ; Jump if zero
  29.                 mov     ax,Hag
  30.                 call    Ostat
  31.                 shr     cl,1                            ; Shift w/zeros fill
  32.                 jz      GRAN                            ; Jump if zero
  33.  
  34.                 mov     bx,Hag              ; ÿáú ¡Ñ ¬páΓÑ¡ 8 í¿Γ
  35. nc_ne8:         mov     cl,ch
  36.                 mov     al,[si]             ; HáτὫ µ¿¬½á
  37.                 shr     al,cl
  38.                 and     al,01h
  39.                 stosb
  40.                 mov     al,ch
  41.                 xor     ah,ah
  42.                 add     ax,bx
  43.                 shr     ax,1
  44.                 rcr     ch,1
  45.                 shr     ax,1
  46.                 rcr     ch,1
  47.                 shr     ax,1
  48.                 rcr     ch,1
  49.                 shr     ch,1
  50.                 shr     ch,1
  51.                 shr     ch,1
  52.                 shr     ch,1
  53.                 add     si,ax
  54.                 shr     ch,1
  55.                 dec     dx
  56.                 jnz     nc_ne8
  57.                 jmp   short Finis
  58. GRAN:
  59.                 mov     bx,ax              ; ÿáú ¬páΓÑ¡ 8 í¿Γ
  60.                 mov     ah,01h
  61. nc_8:           mov     cl,ch
  62.                 mov     al,[si]             ; HáτὫ µ¿¬½á
  63.                 shr     al,cl
  64.                 and     al,ah
  65.                 stosb
  66.                 add     si,bx
  67.                 dec     dx
  68.                 jnz     nc_8
  69. Finis:
  70.                 pop     ds
  71.                 pop     bp
  72.                 ret     14                             ; Return far
  73.  
  74. Bybor          endp
  75.  
  76. ;                              SUBROUTINE
  77. Ostat           proc    near
  78.                 shr     ax,1                 ; éσ«ñ : AX - º¡áτÑ¡¿Ñ
  79.                 rcr     cl,1                 ; éδσ«ñ: AX - º¡áτÑ¡¿Ñ/8
  80.                 shr     ax,1                 ; »«ß½Ñ ¬«¼á¡ñδ SHR cl,1
  81.                 rcr     cl,1                 ; ó pÑú¿ßΓpÑ cl - «ßΓáΓ«¬
  82.                 shr     ax,1                 ; «Γ ñѽѡ¿∩
  83.                 rcr     cl,1
  84.                 shr     cl,1
  85.                 shr     cl,1
  86.                 shr     cl,1
  87.                 shr     cl,1
  88.                 ret
  89. Ostat           endp
  90.  
  91. CODE            ends
  92.                 end
  93.