Tvůrce webu je i pro tebe! Postav třeba web. Bez grafika. Bez kodéra. Hned.
wz

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