Obsah / Utility / HASH / Nahrazení položky seznamu jinou položkou
Zdrojový kód: INCLUDE\UTIL\HASH.INC, UTIL\HASH.ASM
Nahrazení položky seznamu jinou položkou
|
Funkce HashReplace zajistí náhradu prvku seznamu jiným prvkem (který není součástí žádného seznamu). V registru EAX je funkci předán ukazatel na nový prvek seznamu (který nahradí starý prvek), v registru EBX ukazatel na starý prvek seznamu (který bude nahrazen novým prvkem).
Registry ECX a EDX jsou použity jako přechodné, jejich obsahy jsou proto uchovány instrukcemi PUSH/POP. Do přechodných registrů je ze staré položky seznamu načten ukazatel na následující položku (registr ECX, ukazatel může být nulový) a ukazatel na předcházející položku (registr EDX, položkou může být záhlaví seznamu).
Ukazatele na sousední položky jsou připojeny k nové položce - do proměnné HASHE_Next nové položky je uložen ukazatel na následující položku a do proměnné HASHE_Prev nové položky je uložen ukazatel na předcházející položku (nebo záhlaví).
Ukazatel na následující položku (v registru ECX) může být nulový, v takovém případě se přeskočí další instrukce. Jinak se uloží ukazatel na novou položku do proměnné HASHE_Prev následující položky. Ukazatel na novou položku se uloží též do proměnné HASHE_Next předcházející položky. Je-li předcházející položkou záhlaví seznamu, uloží se ukazatel do proměnné HASHH_First záhlaví seznamu a nová položka bude novou první položkou seznamu.
Obsah / Utility / HASH / Nahrazení položky seznamu jinou položkou