Delphi的嵌入式asm: Byte快速转换为16进制

时间:2010-02-01 13:18:53  来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:body>procedure ProcName(...);asm  ...end;  对这种过程/函数,整个由asm写成。内嵌asm还有一种常见用法,就是在程序局部调用asm:...
  正文:Delphi的嵌入式asm一例: Byte快速转换为16进制字符串

  上次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个字节的表,速度最快!  :) "Delphi的嵌入式asm: Byte快速转换为16进制"由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Language/Delphi/12714.html


关键字:

关于《Delphi的嵌入式asm: Byte快速转换为16进制》文章的评论

站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td