指教指教(200分)

  • 主题发起人 主题发起人 阿子
  • 开始时间 开始时间

阿子

Unregistered / Unconfirmed
GUEST, unregistred user!
在开发控件的时候,什么时候要用到汇编语言,要注意那些东西呢,与平时的汇编语言有什
么不同。
 
除了底层控制比如硬件端口等一般都不要汇编,除非你的汇编特别牛。
 
现在谁还用汇编,搞单片机吗?你开个Delphi中的单元源码看看,有的里面就有。比如说
windows.pas里面。
 
比如:
可视化电话
交换机控制
pos
。。。。。。
 

ASM
...
end;
中间的是不是汇编语言啊,我看到好多的新控件都有它啊,是不是很有用的啊
 
大多数情况用不上。只有在很基础的算法部分才考虑使用
以提高性能。
 
不赞成用汇编,因为你需要考虑许多东西,如保护地址、保护栈内容,另外退出时
还要注意恢复,万一有什么东西没有考虑全面,很容易造成程序错误,甚至系统崩溃。
一般需要跟硬件打交道时可以考虑使用汇编,这样可以提高效率
 
procedure TFade.Blendit(bFr,bTo,bLn:Pointer;Width,Height:Integer;Dens:LongInt);Assembler;
ASM
MOV &EBX,EBX
MOV &EDI,EDI
MOV &ESI,ESI
MOV &ESP,ESP
MOV &EBP,EBP
MOV EBX,Dens
MOV Dens1,EBX
NEG BL
ADD BL,$20
MOV Dens2,EBX
CMP Dens1,0
JZ @Ifnal
MOV EDI,bFr
MOV ESI,bTo
MOV ECX,bLn
MOV EAX,Width
lea EAX,[EAX+EAX*2+3]
AND EAX,$FFFFFFFC
IMUL Height
ADD EAX,EDI
MOV IfnA,EAX
MOV ESP,ESI
MOV ECX,ECX
@LOOPA:
MOV EAX,[EBP]
MOV EDI,[ESP]
MOV EBX,EAX
AND EAX,Mask1010
AND EBX,Mask0101
SHR EAX,5
IMUL EAX,Dens2
IMUL EBX,Dens2
MOV ESI,EDI
AND EDI,Mask1010
AND ESI,Mask0101
SHR EDI,5
IMUL EDI,Dens1
IMUL ESI,Dens1
ADD EAX,EDI
ADD EBX,ESI
AND EAX,Mask1010
SHR EBX,5
AND EBX,Mask0101
OR EAX,EBX
MOV [ECX],EAX
ADD EBP,4
ADD ESP,4
ADD ECX,4
CMP EBP,IfnA
JNE @LOOPA
@IFNAL:
MOV EBX,&EBX
MOV EDI,&EDI
MOV ESI,&ESI
MOV ESP,&ESP
MOV EBP,&EBP
END;
分拿不回的,总是要给的。就帮看看这是什么意思吧;这是fade的渲染渐变,有人见过吗?
谢谢了。
 
对硬件编成。
 
阿子:如果你还要继续讨论请定期提前你的帖子,如果不想继续讨论请结束帖子。
请认真阅读大富翁论坛规则说明 http://www.delphibbs.com/delphibbs/rules.htm
 
编程很重要的是代码的可靠性, 用DELPHI可以快速的开发出可靠的代码, 不容易出错!
如果一些对硬件操作, 而用DELHI的OBJECT PASCAL无法实现, 在采用汇编语言,
向阿子这样嵌入的DELPHI的代码中。
用用可以这样嵌入:
procedure TFade.Blendit(Width,Height:Integer;Dens:LongInt);
begin
aa:=Width;
bb:=aa+1;
Asm

MOV EAX,Width
。。。
end



end;
 
不要意思,好久没有上网了,现在才给分!!!
 
后退
顶部