Полностью это выглядит так:
То есть "BIT n, (HL)" устанавливает P, Z и S как прочие инструкции "BIT", но флаги 3 и 5 устанавливает по-другому. И это правильно.BIT n,(HL) *Z*1**0-
P/V, Z, S set as the other BIT instructions, but the 5 and 3 flags are
different. Okay, brace yourself. They are a copy of an internal register of
the Z80, which is set as follows:
ADD HL,xx (use high byte of HL, i.e. H, before the addition)
Однако то, что говорится о самом внутреннем регистре не верно. Во-первых, читая эти слова можно подумать, что внутренний регистр 8-разрядный. Это не так, и "BIT n, (HL)" копирует биты 3 и 5 из старшей половины 16-разрядного внутреннего регистра, MEMPTR.
Во-вторых, "ADD HL, ..." присваивает внутреннему регистру не старшую половину H до сложения, а увеличенное на единицу значение HL. Это происходит действительно до сложения (то есть до копирования результата сложения в HL), но здесь речь идет не о выставлении флагов 3 и 5, а о значении MEMPTR после исполнения "ADD HL, ...". Сама эта инструкция -- "ADD HL, ..." -- копирует во флаги 3 и 5 соответствующие разряды старшей половины результата сложения.
К слову, это относится только к "BIT n, (HL)", но не к "BIT n, (i+d)", которые копируют 3 и 5 биты адреса (i+d) в F.





Ответить с цитированием