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

  1. CODE      SEGMENT
  2.           ASSUME cs:CODE,ds:NOTHING
  3. ;
  4. Pol       equ     DWORD PTR ss:[bp+10]
  5. Ust       equ     DWORD PTR ss:[bp+6]
  6. ;
  7. ; çáñá±Γß∩ ¡áτá½∞¡á∩ πßΓá¡«ó¬á pÑú¿ßΓpá Ust ¿ ó¿ñ »«½¿¡«¼á Pol
  8. ; ñ½∩ »p«µÑñπpδ GenPsp
  9. ;  InPsp32( Pol,Ust : pointer);
  10. ;
  11. InPsp32   PROC    FAR
  12.           PUBLIC  InPsp32
  13.           push    bp
  14.           mov     bp,sp          ;Å«½πτ¿Γ∞ íáºπ ßΓѬá
  15.           push    ds
  16.           cld
  17.           lds     si,pol
  18.           lodsw
  19.           mov     di,[si]    ; AX,DI - »«½¿¡«¼ ÅæÅ
  20.           mov     cx,32
  21. p_pol:    shr     di,1      ; Å«½πτ¿Γ∞ »«½¿¡«¼ ó »α∩¼«⌐
  22.           rcr     ax,1      ; »«ß½Ññ«óáΓѽ∞¡«ßΓ¿
  23.           rcl     bx,1      ; BX,DX - ÉѺπ½∞ΓáΓ »pÑ«íp-∩
  24.           rcl     dx,1
  25.           loop    p_pol
  26.           mov     word ptr cs:[offset Cikl_bit+1],bx ; æ«σpá¡Ñ¡¿Ñ »«½¿¡«¼á
  27.           mov     word ptr cs:[offset St_raz+1],dx   ; ñ½∩ úÑ¡Ñpᵿ¿ ÅæÅ
  28.           mov     word ptr cs:[offset Ot_ml+1],bx  ; æ«σpá¡Ñ¡¿Ñ »«½¿¡«¼á
  29.           mov     word ptr cs:[offset Ot_nu+1],dx  ; ñ½∩ «Γ¬áΓá ¡á 24 í¿Γá
  30.           stc
  31. op_st:    rcr     dx,1
  32.           rcr     bx,1
  33.           jnc     op_st    ; ÅpÑ«ípẫóá¡¿Ñ »«½¿¡«¼á ñ½∩ úÑ¡.ÅæÅ ó
  34.           mov     cl,32    ; «ípáΓ¡«¼ ¡á»páó½Ñ¡¿¿
  35.           mov     word ptr cs:[offset MP_ml+1],bx  ; æ«σpá¡Ñ¡¿Ñ »«½¿¡«¼á
  36.           mov     word ptr cs:[offset kor_nu+1],dx ; ñ½∩ «ípáΓ¡«⌐ ÅæÅ
  37.           lds     si,Ust
  38.           lodsw
  39.           mov     di,[si]       ; AX,DI - ¡áτá½∞¡á∩ πßΓá¡«ó¬á
  40. kor_nu:   mov     dx,02         ; BX,DX - «Γó«ñδ »«½¿¡«¼á
  41. MP_ml:    mov     bx,01
  42.           and     dx,di
  43.           and     bx,ax
  44.           xor     bx,dx
  45.           xor     bl,bh
  46.           jp      Sum_v
  47.           stc
  48. Sum_v:    rcl     ax,1        ; ä«íáó½Ñ¡¿Ñ ¡«ó«ú« í¿Γá
  49.           rcl     di,1
  50.           loop    kor_nu
  51. ;   Åp¿σ«ñ¿Γß∩ úÑ¡Ñp¿p«óáΓ∞ ÅæÅ ó «ípáΓ¡«¼ ¡á»páó½Ñ¡¿¿ ¡á 32 í¿Γá
  52. ;  á ºáΓѼ »p«¿ºó«ñ¿Γ∞ «Γ¬áΓ ¡á 24 í¿Γá , ñ½∩ »páó¿½∞¡«⌐ úÑ¡Ñpᵿ¿
  53. ;  Ñß½¿ ßΓѻѡ∞ »«½¿¡«¼á ¼á½Ñ¡∞¬á∩ ¿ «¡ ºá¡¿¼áÑΓ 1- 8 í¿Γ
  54.           mov     cl,24
  55. OT_nu:    mov     dx,03         ; BX,DX - «Γó«ñδ »«½¿¡«¼á
  56. Ot_ml:    mov     bx,04
  57.           and     dx,di
  58.           and     bx,ax
  59.           xor     bx,dx
  60.           xor     bl,bh
  61.           jp      Sum_o
  62.           stc
  63. Sum_o:    rcr     di,1        ; ä«íáó½Ñ¡¿Ñ ¡«ó«ú« í¿Γá
  64.           rcr     ax,1
  65.           loop    Ot_nu
  66. ;
  67.           mov     word ptr cs:[offset Ust_ml+1],ax ; æ«σpá¡Ñ¡¿Ñ «Γ¬«ppѬΓ
  68.           mov     word ptr cs:[offset Ust_St+1],di ; ¡áτá½∞¡«⌐ πßΓá¡«ó¬¿
  69.           pop     ds
  70.           pop     bp
  71.           ret     8
  72. InPsp32   ENDP
  73. ;
  74. adrm      equ     DWORD PTR ss:[bp+8]
  75. Kol       equ     WORD PTR ss:[bp+6]
  76.  
  77. ; Procedure GenPsp32( m: pointer , Kol : word);
  78. ; Åp«µÑñπpá úÑ¡Ñp¿pπÑΓ KOL íá⌐Γ ÅæÅ ó ¼áßß¿ó ß áñpÑß«¼ î
  79. ; ìáτá½∞¡á∩ πßΓá¡«ó¬á pÑú¿ßΓpá ¿ ó¿ñ »«½¿¡«¼á ºáñá±Γß∩
  80. ; »p«µÑñπp«⌐ InitPsp32
  81. ; Å«óΓ«p¡δ⌐ ó맮ó »p«µÑñπpδ »p«ñ«½ªáÑΓ »p«µÑßß úÑ¡Ñpᵿ¿
  82. ; ÅæÅ ß »pÑpóá¡¡«ú« º¡áτÑ¡¿∩
  83. ;
  84. GenPsp32  PROC    FAR
  85.           PUBLIC  GenPsp32
  86.           push    bp
  87.           mov     bp,sp          ;Å«½πτ¿Γ∞ íáºπ ßΓѬá
  88.           les     di,adrm        ;Å«½πτ¿Γ∞ áñpÑß pѺπ½∞ΓáΓá
  89.           mov     si,Kol         ;諽¿τÑßΓó« íá⌐Γ
  90. Ust_ml:   mov     ax,0FFFh    ; çừ¼¿¡á¡¿Ñ ó pÑú¿ßΓpáσ  AX,DX
  91. Ust_st:   mov     dx,0FFEh    ; ¡áτá½∞¡«⌐ πßΓᡫ󬿠úÑ¡ÑpáΓ«pá
  92. ;
  93. Cikl_mas: mov     cx,8
  94. Cikl_bit: mov     bx,0Dh
  95. St_raz:   mov     bp,0     ;éδí«p «Γó«ñ«ó »«½¿¡«¼á
  96.           and     bx,ax
  97.           and     bp,dx
  98.           xor     bx,bp
  99.           xor     bl,bh
  100.           jp      Sum_0
  101.           stc
  102. Sum_0:    rcr     dx,1         ; æúÑ¡Ñp¿p«óá¡ ¡«óδ⌐ í¿Γ »ß»
  103.           rcr     ax,1
  104.           loop    Cikl_bit
  105.           stosb                ; éδó«ñ ßΣ«p¼¿p«óá¡¡«ú« íá⌐Γá
  106.           dec     si
  107.           jnz     Cikl_mas
  108.           mov     word ptr cs:[offset Ust_ml+1],ax ; æ«σpá¡Ñ¡¿Ñ πßΓá¡«ó¬¿
  109.           mov     word ptr cs:[offset Ust_St+1],dx ; ñ½∩ »p«ñ«½ªÑ¡¿∩ úÑ¡Ñpᵿ¿
  110.           pop     bp
  111.           ret     6
  112. GenPsp32  ENDP
  113. CODE      ENDS
  114.           END
  115.