Это перенос от бит 3 до бит 4, как и обычные записи флага переноса, переносимые из бит 7. Так, например, чтобы получить немного половину переноса в надстройке:
((a&0xf) + (value&0xf))&0x10
Который дает 0x10, если половина кэрри должен быть установлен, 0 в противном случае. Естественно, что получить половину от других соответствующих операционных задач - вопросы - нести ли от низкого куска до максимума.
Чтобы разместить вещи в перспективе, z80 имеет 4-битный ALU и выполняет 8-битные операционные системы, выполняя два 4-битных операнда. Таким образом, он получает половину переноса очень естественно, как промежуточный результат.
DAA заинтересован в значении флага, потому что, если установлена половина переноса, тогда две цифры, которые составляют более 16, были добавлены в низкий грыз; которые будут правильно произведены, переносятся в верхний полубайт, но оставят низкий кусочек 6 ниже, чем он должен быть, поскольку было еще шесть значений между 10, когда оно должно было сгенерировать перенос, и 16, когда это произошло.
Er, не это вопрос электроники? –
Я пишу эмулятор, поэтому я так не думаю ... – Rena