Obsah / Utility / CHARSET / CharUTF32LEW
Zdrojový kód:
INCLUDE\UTIL\CHARSET.INC, UTIL\CHARSET.ASM
CharUTF32LEW - Uložení znaku do bufferu ve
formátu UTF-32LE
Funkce CharUTF32LEW uloží Unicode znak do
bufferu v kódu UTF-32LE, little endian (tj. formát PC Intel, v
paměti je uložen nejdříve nižší bajt dat a poté vyší
bajt).
; -----------------------------------------------------------------------------
; Write character into UTF-32LE (PC, little endian, native UNICODE) buffer
; -----------------------------------------------------------------------------
; INPUT: EAX = Unicode character
; EDI = destination buffer
; EBP = remaining space in buffer
; OUTPUT: EDI = next destination buffer
; EBP = next remaining space in buffer
; DESTROYS: EAX
; -----------------------------------------------------------------------------
|
Na vstupu funkce obsahuje registr EAX
Unicode kód ukládaného znaku, registr EDI ukazatel do
výstupního bufferu a registr EBP čítač zbylých dat ve
výstupním bufferu. Na výstupu funkce je ukazatel v EDI posunut
na novou zápisovou pozici a registr EBP obsahuje nový čítač
zbylých dat v bufferu. Funkce zničí obsah registru EAX.
CharUTF32LEW: sub ebp,byte 4 ; decrease remaining space
jc CharUTF32LEW4 ; buffer full
stosd ; store character
ret
CharUTF32LEW4: add ebp,byte 4 ; return remaining space
jz CharUTF32LEW6 ; no space left
CharUTF32LEW5: stosb ; store character
shr eax,8 ; AL <- prepare next byte
dec ebp ; count remaining space
jnz CharUTF32LEW5 ; store next byte
CharUTF32LEW6: ret
|
Je-li v cílovém bufferu dostatek místa,
uloží se znak v nezměněném tvaru jako 32-bitové číslo.
Při nedostatku místa se uloží pouze první bajty kódu.
Obsah / Utility / CHARSET / CharUTF32LEW