打印本文 打印本文 关闭窗口 关闭窗口
Delphi的嵌入式asm一例: Byte快速转换为16进制字符串
作者:武汉SEO闵涛  文章来源:敏韬网  点击数1021  更新时间:2009/4/23 18:25:57  文章录入:mintao  责任编辑:mintao

  上次Delphi做的asm内嵌过程/函数格式是:
procedure ProcName(...);
asm
  ...
end;
  对这种过程/函数,整个由asm写成。内嵌asm还有一种常见用法,
就是在程序局部调用asm:
function ByteToHex(Src: Byte): String;
begin
  SetLength(Result, 2);
  asm
    MOV         EDI, [Result]
    MOV         EDI, [EDI]
    MOV         AL, Src
    MOV         AH, AL          // Save to AH
    SHR         AL, 4           // Output High 4 Bits
    ADD         AL, ''''0''''
    CMP         AL, ''''9''''
    JBE         @@OutCharLo
    ADD         AL, ''''A''''-''''9''''-1
@@OutCharLo:
    AND         AH, $f
    ADD         AH, ''''0''''
    CMP         AH, ''''9''''
    JBE         @@OutChar
    ADD         AH, ''''A''''-''''9''''-1
@@OutChar:
    STOSW
  end;
end;
  该子程序可以实现把一字节的Src转换为16进制形式的字符串。刚好
一位站友有这样的问题,够快了吧?  :)
    当然,最快的方法还不是这个,想更快吗?拉拉滚动条,看下面:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


    用查表法!512个字节的表,速度最快!  :)

 

打印本文 打印本文 关闭窗口 关闭窗口