两个汇编实现的函数看不懂,请各位大侠帮帮忙!(200分)

  • 主题发起人 主题发起人 charlyisme
  • 开始时间 开始时间
C

charlyisme

Unregistered / Unconfirmed
GUEST, unregistred user!
Procedure OutV(Value:Integer)

Asm
Mov EDX,Value
Inc OB
And OB,3

Cmp OB,1
Je @OB1
Cmp OB,2
Je @OB2
Cmp OB,3
Je @OB3
@OB0:Mov ECX, DstPtr
Mov EAX,EDX
Shr AX,8
OR EAX,DW
Mov [ECX],EAX
Add ECX,4
Mov [Ecx],DL
Inc ECX
Mov DstPtr,Ecx
Jmp @Exit
@OB1:Shl EDX,22
Mov DW,EDX
Jmp @Exit
@OB2:Shl EDX,12
Or DW,EDX
Jmp @Exit
@OB3:Shl EDX,2
Or DW,EDX
@Exit:
End

Procedure GetNextValue
//数据单元拆分
Asm
CMP OB,1
JE @OB1
CMP OB,2
JE @OB2
CMP OB,3
JE @OB3
@OB0: Mov ECX,DataPtr
MOV EDX,[ECX]
Add ECX,4
Mov ThisPackDW,EDX
MOV AL,[ECX]
Inc ECX
Mov DataPtr,ECX
Mov ThisPackByte,AL
Shr EDX,22
Mov Code,DX
Jmp @Exit
@OB1: Mov EAX,ThisPackDW
Shr EAX,12
AND EAX,$3FF
Mov Code,AX
Jmp @Exit
@OB2: Mov EAX,ThisPackDW
Shr EAX,2
AND EAX,$3FF
Mov Code,AX
Jmp @Exit
@OB3: Mov EAX,ThisPackDW
Shl EAX,8
MOV AL,ThisPackByte
AND EAX,$3FF
Mov Code,AX
@Exit:Inc OB
AND OB,3

End

这是我阅读ggcat的lzw变种实现时遇到的两个汇编函数,以前我只阅读过C的LZW实现,看不懂这两个函数的意思,
哪位大侠帮我讲一下,详细注释一下,在下感激不尽!
 
望哪位大侠就这两个汇编函数系统给我讲一讲内嵌汇编是怎么工作的,谢谢!
 
斑竹帮帮忙。
 
ob是什么,没有定义,其他的都好理解
 
有很多变量都不知是干什么的,这两个函数是怎么被调用的也要知道
 
对比C的LZW的实现就可以了三,无非是一些位运算。
 
多人接受答案了。
 
后退
顶部