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

Obsah / Utility / CHARSET / CharSBRead

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


CharSBRead - Načtení znaku z bufferu v 1-bajtovém formátu

Funkce CharSBRead načte znak z bufferu v 1-bajtovém formátu.


; -----------------------------------------------------------------------------
;                  Read character from single byte buffer
; -----------------------------------------------------------------------------
; INPUT:	EBX = character set structure CHARSET (only singlebyte allowed)
;		ECX = remaining bytes
;		EDX = invalid character (in Unicode, 0 = default character)
;		ESI = source buffer
; OUTPUT:	EAX = Unicode character (EAX <- EDX on error)
;		ECX = next remaining bytes
;		ESI = next source buffer
;		CY = invalid character or no other char (EAX <- EDX on error)
; -----------------------------------------------------------------------------

CharSBRead:	jecxz	CharToUnicode8	; no character
		lodsb			; load character from buffer
		dec	ecx		; decrease remaining characters

; CharToUnicode must follow.

Na vstupu funkce obsahuje registr ESI ukazatel na data ve vstupním bufferu, registr ECX počet bajtů ve vstupním bufferu, registr EDX Unicode kód znaku, který se použije v případě neplatných dat v bufferu, a registr EBX ukazatel na znakovou sadu CHARSET. Je povolena pouze 1-bajtová znaková sada. Na výstupu z funkce je v registru EAX navrácen Unicode kód načteného znaku (nebo neplatný kód z registru EDX, pokud nejsou k dispozici další data), v registru ESI nový ukazatel na vstupní data a v registru ECX nová velikost vstupních dat. Navíc je v případě chyby navrácen příznak chyby CY.

Funkce načte z bufferu 1-bajtový znak a pokračuje obsluhou pro konverzi znaku na kód Unicode CharToUnicode. V případě konce bufferu se funkce ukončí s chybou.


Obsah / Utility / CHARSET / CharSBRead