为什么没人回答我的问题!?????

解决方案 »

  1.   

    procedure FPower10;
    asm
      JMP  _Pow10
    end;procedure _Pow10;
    asm
      PUSH  EBX
    {$IFDEF PIC}
      PUSH  EAX
      CALL  GetGOT
      MOV   EBX,EAX
      POP   EAX
    {$ELSE}
      XOR   EBX,EBX
    {$ENDIF}
      TEST  EAX,EAX
      JL  @@neg
      JE  @@exit
      CMP EAX,5120
      JGE @@inf
      MOV EDX,EAX
      AND EDX,01FH
      LEA EDX,[EDX+EDX*4]
      FLD tbyte ptr @@tab0[EBX+EDX*2]  FMULP  SHR EAX,5
      JE  @@exit  MOV EDX,EAX
      AND EDX,0FH
      JE  @@skip2ndMul
      LEA EDX,[EDX+EDX*4]
      FLD tbyte ptr @@tab1-10[EBX+EDX*2]
      FMULP@@skip2ndMul:  SHR EAX,4
      JE  @@exit
      LEA EAX,[EAX+EAX*4]
      FLD tbyte ptr @@tab2-10[EBX+EAX*2]
      FMULP
      JMP   @@exit@@neg:
      NEG EAX
      CMP EAX,5120
      JGE @@zero
      MOV EDX,EAX
      AND EDX,01FH
      LEA EDX,[EDX+EDX*4]
      FLD tbyte ptr @@tab0[EBX+EDX*2]
      FDIVP  SHR EAX,5
      JE  @@exit  MOV EDX,EAX
      AND EDX,0FH
      JE  @@skip2ndDiv
      LEA EDX,[EDX+EDX*4]
      FLD tbyte ptr @@tab1-10[EBX+EDX*2]
      FDIVP@@skip2ndDiv:  SHR EAX,4
      JE  @@exit
      LEA EAX,[EAX+EAX*4]
      FLD tbyte ptr @@tab2-10[EBX+EAX*2]
      FDIVP  JMP   @@exit@@inf:
      FLD tbyte ptr @@infval[EBX]
      JMP   @@exit@@zero:
      FLDZ@@exit:
      POP EBX
      RET@@infval:  DW  $0000,$0000,$0000,$8000,$7FFF
    @@tab0:    DW  $0000,$0000,$0000,$8000,$3FFF  // 10**0
               DW  $0000,$0000,$0000,$A000,$4002    // 10**1
               DW  $0000,$0000,$0000,$C800,$4005    // 10**2
               DW  $0000,$0000,$0000,$FA00,$4008        // 10**3
               DW  $0000,$0000,$0000,$9C40,$400C        // 10**4
               DW  $0000,$0000,$0000,$C350,$400F        // 10**5
               DW  $0000,$0000,$0000,$F424,$4012        // 10**6
               DW  $0000,$0000,$8000,$9896,$4016        // 10**7
               DW  $0000,$0000,$2000,$BEBC,$4019        // 10**8
               DW  $0000,$0000,$2800,$EE6B,$401C        // 10**9
               DW  $0000,$0000,$F900,$9502,$4020        // 10**10
               DW  $0000,$0000,$B740,$BA43,$4023        // 10**11
               DW  $0000,$0000,$A510,$E8D4,$4026        // 10**12
               DW  $0000,$0000,$E72A,$9184,$402A        // 10**13
               DW  $0000,$8000,$20F4,$B5E6,$402D        // 10**14
               DW  $0000,$A000,$A931,$E35F,$4030        // 10**15
               DW  $0000,$0400,$C9BF,$8E1B,$4034        // 10**16
               DW  $0000,$C500,$BC2E,$B1A2,$4037        // 10**17
               DW  $0000,$7640,$6B3A,$DE0B,$403A        // 10**18
               DW  $0000,$89E8,$2304,$8AC7,$403E        // 10**19
               DW  $0000,$AC62,$EBC5,$AD78,$4041        // 10**20
               DW  $8000,$177A,$26B7,$D8D7,$4044        // 10**21
               DW  $9000,$6EAC,$7832,$8786,$4048        // 10**22
               DW  $B400,$0A57,$163F,$A968,$404B        // 10**23
               DW  $A100,$CCED,$1BCE,$D3C2,$404E        // 10**24
               DW  $84A0,$4014,$5161,$8459,$4052        // 10**25
               DW  $A5C8,$9019,$A5B9,$A56F,$4055        // 10**26
               DW  $0F3A,$F420,$8F27,$CECB,$4058        // 10**27
               DW  $0984,$F894,$3978,$813F,$405C        // 10**28
               DW  $0BE5,$36B9,$07D7,$A18F,$405F        // 10**29
               DW  $4EDF,$0467,$C9CD,$C9F2,$4062        // 10**30
               DW  $2296,$4581,$7C40,$FC6F,$4065        // 10**31@@tab1:    DW  $B59E,$2B70,$ADA8,$9DC5,$4069        // 10**32
               DW  $A6D5,$FFCF,$1F49,$C278,$40D3        // 10**64
               DW  $14A3,$C59B,$AB16,$EFB3,$413D        // 10**96
               DW  $8CE0,$80E9,$47C9,$93BA,$41A8        // 10**128
               DW  $17AA,$7FE6,$A12B,$B616,$4212        // 10**160
               DW  $556B,$3927,$F78D,$E070,$427C        // 10**192
               DW  $C930,$E33C,$96FF,$8A52,$42E7        // 10**224
               DW  $DE8E,$9DF9,$EBFB,$AA7E,$4351        // 10**256
               DW  $2F8C,$5C6A,$FC19,$D226,$43BB        // 10**288
               DW  $E376,$F2CC,$2F29,$8184,$4426        // 10**320
               DW  $0AD2,$DB90,$2700,$9FA4,$4490        // 10**352
               DW  $AA17,$AEF8,$E310,$C4C5,$44FA        // 10**384
               DW  $9C59,$E9B0,$9C07,$F28A,$4564        // 10**416
               DW  $F3D4,$EBF7,$4AE1,$957A,$45CF        // 10**448
               DW  $A262,$0795,$D8DC,$B83E,$4639        // 10**480@@tab2:    DW  $91C7,$A60E,$A0AE,$E319,$46A3        // 10**512
               DW  $0C17,$8175,$7586,$C976,$4D48        // 10**1024
               DW  $A7E4,$3993,$353B,$B2B8,$53ED        // 10**1536
               DW  $5DE5,$C53D,$3B5D,$9E8B,$5A92        // 10**2048
               DW  $F0A6,$20A1,$54C0,$8CA5,$6137        // 10**2560
               DW  $5A8B,$D88B,$5D25,$F989,$67DB        // 10**3072
               DW  $F3F8,$BF27,$C8A2,$DD5D,$6E80        // 10**3584
               DW  $979B,$8A20,$5202,$C460,$7525        // 10**4096
               DW  $59F0,$6ED5,$1162,$AE35,$7BCA        // 10**4608
    end;