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

Obsah / Utility / CHARSET / CharSBWrite

Zdrojový kód: INCLUDE\UTIL\CHARSET.INC, UTIL\CHARSET.ASM


CharSBWrite - Uložení znaku do bufferu v 1-bajtovém formátu

Funkce CharSBWrite uloží Unicode znak do bufferu v 1-bajtovém formátu.


; -----------------------------------------------------------------------------
;                  Write character into single byte buffer
; -----------------------------------------------------------------------------
; INPUT:	EAX = Unicode character
;		EBX = character set structure CHARSET (only singlebyte allowed)
;		DL = invalid character (0=use default character)
;		EDI = destination buffer
;		EBP = remaining space in buffer
; OUTPUT:	EDI = next destination buffer
;		EBP = next remaining space in buffer
; DESTROYS:	EAX
; NOTES:	Character set must be singlebyte.
; -----------------------------------------------------------------------------

Na vstupu funkce obsahuje registr EAX Unicode kód ukládaného znaku, registr EDI ukazatel do výstupního bufferu, registr EBP čítač zbylých dat ve výstupním bufferu, registr DL znak, který se použije v případě neplatného znaku, a registr EBX ukazatel na znakovou sadu CHARSET. Je povolena pouze 1-bajtová znaková sada (není funkcí kontrolováno). 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.


CharSBWrite:	or	ebp,ebp		; buffer full?
		jz	CharSBWrite4	; buffer full
		call	CharFromUnicode	; convert character
		stosb			; store character
		dec	ebp		; decrease remaining space
CharSBWrite4:	ret

Na začátku funkce se otestuje registr EBP, zda je k dispozici místo pro uložení dalšího bajtu.Je-li v cílovém bufferu dostatek místa, zkonvertuje se pomocí funkce CharFromUnicode znak na 1-bajtový znak podle znakové sady v registru EBX a uloží se do výstupního bufferu.


Obsah / Utility / CHARSET / CharSBWrite