📄 huffmandecode.asm
字号:
.code
HuffmanDecode? proc uses ebx esi edi,$lpMemory
LOCAL @ResultFlag,@SizeImage,@x,@lpMemory
mov @ResultFlag,FALSE
mov eax,$lpMemory
.if dword ptr [eax] == 'FUH'
lea ebx,[eax+4]
add eax,4+256*8
lea esi,[eax+sizeof BITMAPINFOHEADER+1024]
assume eax:ptr BITMAPINFOHEADER
m2m @SizeImage,[eax].biSizeImage
invoke GlobalAlloc,GMEM_FIXED or GMEM_ZEROINIT,[eax].biSizeImage
mov @lpMemory,eax
assume eax:nothing
mov edi,eax
mov edx,7
mov @x,0
.repeat
mov eax,0
mov ecx,0
.repeat
inc ecx
bt [esi],edx
rcl eax,1
sub edx,1
.if carry?
mov edx,7
inc esi
.endif
push edi
mov edi,0
.repeat
.if ecx == [ebx+edi*8+4] && eax == [ebx+edi*8]
jmp OutLabel
.endif
inc edi
.until edi == 256
pop edi
.until ecx == 32
OutLabel: mov eax,edi
pop edi
mov byte ptr [edi],al
inc edi
inc @x
mov eax,@x
.until eax == @SizeImage
.endif
mov eax,@lpMemory
ret
HuffmanDecode? endp
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -