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

Obsah / Utility / HASH / Inicializace popisovače seznamu

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


Inicializace popisovače seznamu

Položky seznamu není třeba inicializovat, inicializuje se pouze položka záhlaví seznamu a to tak, že její ukazatel HASHH_First se nastaví na hodnotu NULL (= 0) jako příznak, že seznam je prázdný.


NULL		EQU	0		; invalid pointer

; ------------- Macro - initialized hash list head

%define		HASHHEAD dd	NULL

; ------------- Macro - initialized hash list (%1 = hash list size)

%macro		HASHLIST 1
 %rep %1
		HASHHEAD
 %endrep
%endmacro

; ------------- Macro - initialize hash list head (%1 = pointer to head)

%macro		HASHHINIT 1
		and	dword [%1+HASHH_First],byte NULL ; no first entry
%endmacro

; ------------- Macro - test if hash list is empty (output: ZY = list is empty)
; %1 = pointer to hash list head

%macro		HASHHTEST 1
		cmp	dword [%1+HASHH_First],byte NULL ; is list empty?
%endmacro

Makro HASHHEAD deklaruje jednu položku záhlaví hashovaného seznamu. Její ukazatel HASHH_First je nastaven na hodnotu NULL jako příznak prázdného seznamu.

Jediná samotná položka záhlaví nemá význam - hashovaný seznam je založen na vytvoření pole záhlaví, které bude indexováno hashovacím klíčem. Makro HASHLIST vytvoří pole hashovacího seznamu o počtu prvků určeném parametrem makra.

Makro HASHINIT inicializuje jednu položku záhlaví a to tak, že nastaví její ukazatel HASHH_First na hodnotu NULL (tedy prázdný seznam). Parametrem makra je ukazatel na položku záhlaví.

Pomocí makra HASHHTEST lze testovat, zda je hashovaný seznam prázdný. Pokud je prázdný, nastaví se příznak ZF (tj. podmínka ZY), jinak se příznak vynuluje (tj. podmínka NZ). Parametrem makra je ukazatel na položku záhlaví.


Obsah / Utility / HASH / Inicializace popisovače seznamu