1;/*++ 2; 3;Copyright (c) 2006, Intel Corporation. All rights reserved.<BR> 4;This program and the accompanying materials 5;are licensed and made available under the terms and conditions of the BSD License 6;which accompanies this distribution. The full text of the license may be found at 7;http://opensource.org/licenses/bsd-license.php 8; 9;THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 10;WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 11; 12;Module Name: 13; 14; Power10U64.c 15; 16;Abstract: 17; 18; Calculates Operand * 10 ^ Power 19; 20;--*/ 21; 22;#include "Tiano.h" 23;--------------------------------------------------------------------------- 24 .686 25 .model flat,C 26 .code 27 28MultU64x32 PROTO C 29;--------------------------------------------------------------------------- 30; 31;UINT64 32;MultU64x32 ( 33; IN UINT64 Multiplicand, 34; IN UINTN Multiplier 35; ); 36; 37;UINT64 38;Power10U64 ( 39; IN UINT64 Operand, 40; IN UINTN Power 41; ) 42;/*++ 43; 44;Routine Description: 45; 46; Raise 10 to the power of Power, and multiply the result with Operand 47; 48;Arguments: 49; 50; Operand - multiplicand 51; Power - power 52; 53;Returns: 54; 55; Operand * 10 ^ Power 56; 57;--*/ 58Power10U64 PROC 59 push ebp 60 mov ebp, esp 61 mov eax, dword ptr [ebp + 8]; dword ptr Operand[0] 62 mov edx, dword ptr [ebp + 0Ch]; dword ptr Operand[4] 63 mov ecx, dword ptr [ebp + 10h] ;Power 64 jcxz _Power10U64_Done 65 66_Power10U64_Wend: 67 push ecx 68 push 10 69 push [ebp + 0Ch]; dword ptr Operand[4] 70 push [ebp + 8]; dword ptr Operand[0] 71 call MultU64x32 72 add esp, 0cH 73 pop ecx 74 mov [ebp + 8] , eax; dword ptr Operand[0] 75 mov [ebp + 0Ch] , edx; dword ptr Operand[4] 76 loop _Power10U64_Wend 77 78_Power10U64_Done: 79 80 pop ebp 81 ret 82Power10U64 ENDP 83 END 84