汇编翻译为Pascal

genispan 2013-03-04 11:16:20
有没有大牛帮忙翻译下下面的汇编代码,感激不尽!

procedure _ClearAlpha(Src: Pointer; Count: integer; Value: longword);
asm
{ Clear alpha }
PUSH EDI

MOV EDI, EAX {X}
MOV EAX, ECX {Value}
MOV ECX, EDX {Count}
TEST ECX,ECX
JS @exit
AND EAX, $00FFFFFF
@1:
MOV EDX, [EDI]
AND EDX, $00FFFFFF
CMP EDX, EAX
JNE @2
MOV [EDI], EDX
@2:
ADD EDI, 4

LOOP @1

@exit:
POP EDI
end;

还有一段:

procedure _FillLongwordRect(Src: Pointer; W, H, X1, Y1, X2, Y2: Integer; Value: Longword);
asm
PUSH EDI
PUSH EAX
PUSH EBX
PUSH ECX
PUSH EDX

MOV EDI, EAX
XOR EBX, EBX
XOR EAX, EAX
MOV EBX, W
MOV EAX, Y1
MUL EBX
ADD EAX, X1
ADD EDI, EAX
ADD EDI, EAX
ADD EDI, EAX
ADD EDI, EAX

MOV EBX, X2
SUB EBX, X1
INC EBX
TEST EBX,EBX
JS @exit

MOV EDX, Y2
SUB EDX, Y1
INC EDX
TEST EDX,EDX
JS @exit
MOV EAX, VALUE

@1:
PUSH EDI
MOV ECX, EBX
CLD
REP STOSD
POP EDI
POP ECX
ADD EDI, ECX
ADD EDI, ECX
ADD EDI, ECX
ADD EDI, ECX
PUSH ECX
DEC EDX
CMP EDX, 0
JNE @1

@exit:
POP EDX
POP ECX
POP EBX
POP EAX
POP EDI
end;

...全文
142 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

5,927

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧