|
Delphi的嵌入式asm一例: Byte快速转换为16进制字符串nHbLinux联盟 nHbLinux联盟 上次Delphi做的asm内嵌过程/函数格式是:nHbLinux联盟
nHbLinux联盟 procedure ProcName(...);nHbLinux联盟 asmnHbLinux联盟 ...nHbLinux联盟 end; |
nHbLinux联盟 对这种过程/函数,整个由asm写成。内嵌asm还有一种常见用法,nHbLinux联盟 就是在程序局部调用asm:nHbLinux联盟
nHbLinux联盟 function ByteToHex(Src: Byte): String;nHbLinux联盟 beginnHbLinux联盟 SetLength(Result, 2);nHbLinux联盟 asmnHbLinux联盟 MOV EDI, [Result]nHbLinux联盟 MOV EDI, [EDI]nHbLinux联盟 MOV AL, SrcnHbLinux联盟 MOV AH, AL // Save to AHnHbLinux联盟 SHR AL, 4 // Output High 4 BitsnHbLinux联盟 ADD AL, '0'nHbLinux联盟 CMP AL, '9'nHbLinux联盟 JBE @@OutCharLonHbLinux联盟 ADD AL, 'A'-'9'-1nHbLinux联盟 @@OutCharLo:nHbLinux联盟 AND AH, $fnHbLinux联盟 ADD AH, '0'nHbLinux联盟 CMP AH, '9'nHbLinux联盟 JBE @@OutCharnHbLinux联盟 ADD AH, 'A'-'9'-1nHbLinux联盟 @@OutChar:nHbLinux联盟 STOSWnHbLinux联盟 end;nHbLinux联盟 end; |
nHbLinux联盟 该子程序可以实现把一字节的Src转换为16进制形式的字符串。刚好nHbLinux联盟 一位站友有这样的问题,够快了吧? :)nHbLinux联盟 当然,最快的方法还不是这个,想更快吗?用查表法!512个字节的表,速度最快! :)
Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论 |
|