前些天就一直考虑这个问题,没有用程序实现,昨天有空的时候用汇编写一个子程序
调试通过。
sqtdata proc sss:DWORD,ddd:DWORD
LOCAL mulaa
:DWORD
push
esi
push
edi
invoke
GlobalAlloc,40h,8196+4
mov
mulaa,eax
.if
eax!=0
mov
esi,sss
mov
edi,ddd
mov
ecx,[esi]
xor
eax,eax
stosd
rep
stosd
mov
ecx,[esi]
shl
ecx,4
mov
eax,ecx
shr
eax,5
inc
eax
mov
edi,ddd
mov
[edi],eax
sqtdata01:
push
ecx
invoke
set1data,edi,ecx
invoke
muldata,edi,edi,mulaa
invoke
cmpdata,mulaa,esi
.if
(eax==1)
pop
ecx
invoke
set0data,edi,ecx
loop
sqtdata01
jmp
sqtdata011
.endif
.if
(eax==-1)
pop
ecx
loop
sqtdata01
sqtdata011:
invoke
set1data,edi,0
invoke
muldata,edi,edi,mulaa
invoke
cmpdata,mulaa,esi
LOCAL