Obsah / Utility / TEXT / TextAddFormatF
Zdrojový kód:
INCLUDE\UTIL\TEXT.INC, UTIL\TEXT.ASM
TextAddFormatF -
Přidání formátovaného textu na konec textu s float
argumentem
Funkce TextAddFormatF přidá
formátovaný text na konec textu s jedním float argumentem.
Funkce použije implicitní popisovač národnostních
informací.
; -----------------------------------------------------------------------------
; Add formated text to end of text with float argument and default nationality
; -----------------------------------------------------------------------------
; INPUT: EAX = pointer to source TEXT variable
; EBX = pointer to destination TEXT variable
; ST0 = float argument (number will be removed from FPU stack)
; OUTPUT: CY = memory error or invalid argument index (text not changed)
; NOTES: It uses double float size of argument (neither H nor L size).
; -----------------------------------------------------------------------------
; ------------- Push registers
TextAddFormatF: push ecx ; push ECX
push edx ; push EDX
push esi ; push ESI
; ------------- Store number into stack
push ecx ; reserve 1 DWORD
push ecx ; reserve 1 DWORD
mov edx,esp ; EDX <- pointer to stack
fstp qword [edx] ; store number into stack
; ------------- Format text
xor ecx,ecx ; ECX <- 0
mov cl,2 ; ECX <- 2, number of DWORD arguments
xor esi,esi ; ESI <- 0, default nationality
call TextAddFormat ; format text
; ------------- Destroys local buffer
pop ecx ; destroy 1 DWORD
pop ecx ; destroy 1 DWORD
; ------------- Pop registers
pop esi ; pop ESI
pop edx ; pop EDX
pop ecx ; pop ECX
ret
|
Na vstupu funkce obsahuje registr EAX
ukazatel na textovou proměnnou obsahující formátovací
řetězec. Formátovací řetězec
musí obsahovat maximálně jeden argument - desetinné číslo.
Registr EBX obsahuje ukazatel na cílovou proměnnou, do které
se zformátovaný text uloží. Registr ST0 obsahuje argument -
desetinné číslo. Funkce číslo uvolní ze zásobníku
koprocesoru. V případě chyby paměti, nebo pokud je ve
formátovacím řetězci použit neplatný index argumentu, je
navrácen chybový příznak CY a obsah cílové textové
proměnné se nezmění.
Funkce vnitřně volá funkci TextAddFormat, které předá ukazatel na argument uložený v
zásobníku. Pro ten účel vytvoří v zásobníku prostor pro
argument o velikosti 2 dvojslov a uloží tam obsah registru ST0.
Do registru ECX uloží hodnotu 2 jako velikost argumentu v
zásobníku. Registr ESI vynuluje jako příznak použití
implicitního popisovače národnostních informací.
Obsah / Utility / TEXT / TextAddFormatF