Delphi的嵌入式asm一例: Byte快速转换为16进制字符串

    技术2022-05-11  135

      上次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个字节的表,速度最快!  :)

     


    最新回复(0)