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 >
Wrap
Assembly Source File
|
1999-11-25
|
4KB
|
115 lines
CODE SEGMENT
ASSUME cs:CODE,ds:NOTHING
;
Pol equ DWORD PTR ss:[bp+10]
Ust equ DWORD PTR ss:[bp+6]
;
; çáñá±Γß∩ ¡áτá½∞¡á∩ πßΓá¡«ó¬á pÑú¿ßΓpá Ust ¿ ó¿ñ »«½¿¡«¼á Pol
; ñ½∩ »p«µÑñπpδ GenPsp
; InPsp32( Pol,Ust : pointer);
;
InPsp32 PROC FAR
PUBLIC InPsp32
push bp
mov bp,sp ;Å«½πτ¿Γ∞ íáºπ ßΓѬá
push ds
cld
lds si,pol
lodsw
mov di,[si] ; AX,DI - »«½¿¡«¼ ÅæÅ
mov cx,32
p_pol: shr di,1 ; Å«½πτ¿Γ∞ »«½¿¡«¼ ó »α∩¼«⌐
rcr ax,1 ; »«ß½Ññ«óáΓѽ∞¡«ßΓ¿
rcl bx,1 ; BX,DX - ÉѺπ½∞ΓáΓ »pÑ«íp-∩
rcl dx,1
loop p_pol
mov word ptr cs:[offset Cikl_bit+1],bx ; æ«σpá¡Ñ¡¿Ñ »«½¿¡«¼á
mov word ptr cs:[offset St_raz+1],dx ; ñ½∩ úÑ¡Ñpᵿ¿ ÅæÅ
mov word ptr cs:[offset Ot_ml+1],bx ; æ«σpá¡Ñ¡¿Ñ »«½¿¡«¼á
mov word ptr cs:[offset Ot_nu+1],dx ; ñ½∩ «Γ¬áΓá ¡á 24 í¿Γá
stc
op_st: rcr dx,1
rcr bx,1
jnc op_st ; ÅpÑ«ípẫóá¡¿Ñ »«½¿¡«¼á ñ½∩ úÑ¡.ÅæÅ ó
mov cl,32 ; «ípáΓ¡«¼ ¡á»páó½Ñ¡¿¿
mov word ptr cs:[offset MP_ml+1],bx ; æ«σpá¡Ñ¡¿Ñ »«½¿¡«¼á
mov word ptr cs:[offset kor_nu+1],dx ; ñ½∩ «ípáΓ¡«⌐ ÅæÅ
lds si,Ust
lodsw
mov di,[si] ; AX,DI - ¡áτá½∞¡á∩ πßΓá¡«ó¬á
kor_nu: mov dx,02 ; BX,DX - «Γó«ñδ »«½¿¡«¼á
MP_ml: mov bx,01
and dx,di
and bx,ax
xor bx,dx
xor bl,bh
jp Sum_v
stc
Sum_v: rcl ax,1 ; ä«íáó½Ñ¡¿Ñ ¡«ó«ú« í¿Γá
rcl di,1
loop kor_nu
; Åp¿σ«ñ¿Γß∩ úÑ¡Ñp¿p«óáΓ∞ ÅæÅ ó «ípáΓ¡«¼ ¡á»páó½Ñ¡¿¿ ¡á 32 í¿Γá
; á ºáΓѼ »p«¿ºó«ñ¿Γ∞ «Γ¬áΓ ¡á 24 í¿Γá , ñ½∩ »páó¿½∞¡«⌐ úÑ¡Ñpᵿ¿
; Ñß½¿ ßΓѻѡ∞ »«½¿¡«¼á ¼á½Ñ¡∞¬á∩ ¿ «¡ ºá¡¿¼áÑΓ 1- 8 í¿Γ
mov cl,24
OT_nu: mov dx,03 ; BX,DX - «Γó«ñδ »«½¿¡«¼á
Ot_ml: mov bx,04
and dx,di
and bx,ax
xor bx,dx
xor bl,bh
jp Sum_o
stc
Sum_o: rcr di,1 ; ä«íáó½Ñ¡¿Ñ ¡«ó«ú« í¿Γá
rcr ax,1
loop Ot_nu
;
mov word ptr cs:[offset Ust_ml+1],ax ; æ«σpá¡Ñ¡¿Ñ «Γ¬«ppѬΓ
mov word ptr cs:[offset Ust_St+1],di ; ¡áτá½∞¡«⌐ πßΓá¡«ó¬¿
pop ds
pop bp
ret 8
InPsp32 ENDP
;
adrm equ DWORD PTR ss:[bp+8]
Kol equ WORD PTR ss:[bp+6]
; Procedure GenPsp32( m: pointer , Kol : word);
; Åp«µÑñπpá úÑ¡Ñp¿pπÑΓ KOL íá⌐Γ ÅæÅ ó ¼áßß¿ó ß áñpÑß«¼ î
; ìáτá½∞¡á∩ πßΓá¡«ó¬á pÑú¿ßΓpá ¿ ó¿ñ »«½¿¡«¼á ºáñá±Γß∩
; »p«µÑñπp«⌐ InitPsp32
; Å«óΓ«p¡δ⌐ ó맮ó »p«µÑñπpδ »p«ñ«½ªáÑΓ »p«µÑßß úÑ¡Ñpᵿ¿
; ÅæÅ ß »pÑpóá¡¡«ú« º¡áτÑ¡¿∩
;
GenPsp32 PROC FAR
PUBLIC GenPsp32
push bp
mov bp,sp ;Å«½πτ¿Γ∞ íáºπ ßΓѬá
les di,adrm ;Å«½πτ¿Γ∞ áñpÑß pѺπ½∞ΓáΓá
mov si,Kol ;諽¿τÑßΓó« íá⌐Γ
Ust_ml: mov ax,0FFFh ; çừ¼¿¡á¡¿Ñ ó pÑú¿ßΓpáσ AX,DX
Ust_st: mov dx,0FFEh ; ¡áτá½∞¡«⌐ πßΓá¡«ó¬¿ úÑ¡ÑpáΓ«pá
;
Cikl_mas: mov cx,8
Cikl_bit: mov bx,0Dh
St_raz: mov bp,0 ;éδí«p «Γó«ñ«ó »«½¿¡«¼á
and bx,ax
and bp,dx
xor bx,bp
xor bl,bh
jp Sum_0
stc
Sum_0: rcr dx,1 ; æúÑ¡Ñp¿p«óá¡ ¡«óδ⌐ í¿Γ »ß»
rcr ax,1
loop Cikl_bit
stosb ; éδó«ñ ßΣ«p¼¿p«óá¡¡«ú« íá⌐Γá
dec si
jnz Cikl_mas
mov word ptr cs:[offset Ust_ml+1],ax ; æ«σpá¡Ñ¡¿Ñ πßΓá¡«ó¬¿
mov word ptr cs:[offset Ust_St+1],dx ; ñ½∩ »p«ñ«½ªÑ¡¿∩ úÑ¡Ñpᵿ¿
pop bp
ret 6
GenPsp32 ENDP
CODE ENDS
END