0.00
Рейтинг
0.21
Сила

DDp

  • avatar DDp
  • 7
Фуцк Mihip-у за не правильную (не подсчитанную) контрольную сумму ;)
Как её считать? Очень просто! Вот, процедурка для i8080
// процедура подсчёта контрольной суммы Радио-86РК/Апогей/Партнёр/Специалист (версия для i8080/Z80)
// вх:  HL - указатель на начало буфера
//      DE - указатель на конец буфера
// вых: BC - контрольная сумма
AB AA AA        // очищаем BC (здесь будет КС)
HP IB EO        // обновляем с мл.байт КС
OF              // сохранение флагов
MN CC AA        // 1я проверка на конец блока
MK BN AA        // да, конец
OB              // восстановление флагов
HI IP EH        // обновляем с ст.байт КС
MN BH AA        // 2я проверка на конец блока и инкремент указателя
MD AD AA        // на начало цикла

// сравнение HL и DE,
// если равны, то выход из процедура вызвавшей эту,
// иначе инкремент HL
MN CC AA
MC CA AA
DD DD MJ

CD MJ

// сравнение HL и DE
HM LK MA
HN LL MJ

Неужели не понятно?!
Хм… oк, тогда для i8086
// процедура подсчёта контрольной суммы Радио-86РК/Апогей/Партнёр/Специалист (версия для i8086)
// вх:  di - указатель на начало буфера
//      cx - количество байт
// вых: bx - контрольная сумма
LL AA AA        // очищаем bx (здесь будет КС)
EJ HE AJ        // это случай, когда cx=1
IK AF           // байт из буфера
EH              // инкремент указателя
IK PA           // копируем в старший
AD NI           // складываем
PC OH           // если не последний байт, на начало цикла
IK AF           // последний байт
AC NI           // складываем
MD              // выход из процедуры


— — — Если серьёзно, то присоединюсь к introspec-у и заминусую пост потому_что_он_про_Wct