XorAndXor

 


Начал пополнять вики сайзкодеров. Нужно было добавить процедуру расчета адреса для построения точки $22B0(reg.A=X coordinate,reg.C=Y coordinate) Я решил взглянуть на код, чтобы проверить. И тут мне попался участок, который я не понимал.

22B0       47                    LD            B ,A
22B1       A7                    AND           A
22B2       1F                    RRA
22B3       37                    SCF
22B4       1F                    RRA
22B5       A7                    AND           A
22B6       1F                    RRA
22B7       A8                    XOR           B
22B8       E6  F8                AND           $F8
22BA       A8                    XOR           B
22BB       67                    LD            H ,A
22BC       79                    LD            A ,C
22BD       07                    RLCA
22BE       07                    RLCA
22BF       07                    RLCA
22C0       A8                    XOR           B
22C1       E6  C7                AND           $C7
22C3       A8                    XOR           B
22C4       07                    RLCA
22C5       07                    RLCA
22C6       6F                    LD            L ,A
22C7       79                    LD            A ,C
22C8       E6  07                AND           $07
22CA       C9                    RET


Непонятна операция XOR-AND XOR. Тред мне ничего не объяснил. Если поразмыслить, то опкоды xor b/and $f8/xor b выполнят операцию A=A|(B&7). или A=A|(reg&~mask). Возьму на вооружение этот прием.


Комментарии