Если это ваш первый визит, рекомендуем почитать справку по форуму. Для размещения своих сообщений необходимо зарегистрироваться. Для просмотра сообщений выберите раздел. |
Вопрос по асму Z80. |
Философия, технологии, алгоритмы! |
|
Опции темы |
16.07.2012, 17:14 | #2 |
Форумец
Сообщений: 39,873
Регистрация: 27.05.2003
Возраст: 46
Не в сети |
|
16.07.2012, 21:07 | #3 | |
Форумец
Сообщений: 595
Регистрация: 27.03.2004
Возраст: 45
Не в сети |
Цитата:
Поставлю задачу более конкретно. mod высчитывается в подпрограмме. Обращение к подпрограмме идет с разными входными данными. Входные данные: HL - делимое С - делитель (т.е.) надо найти HL mod C Выходные данные: A = HL mod C Самый простой способ - вычитание (HL - C) в цикле до тех пор, пока HL не станет отрицательным. Прибавив к нем вычитаемое получим значение mod-а. Вот набросал код. Кто может посмотреть наметанным глазом и сказать что-нибудь про его работоспособность. Просто используется флаг переноса, а с флагами у меня беда . MOD: LD B,0 ;создаем пару BC _Loop: AND A ;Сброс флага переноса для SBC SBC HL,BC ;HL <- HL - BC - Carry JR NC,_Loop ;Если HL >= BC, то переходим в SUB RET ;Возврат |
|