Контрольная сумма


Главная / ЭКВМ / Программы для ЭКВМ / Служебные программы и утилиты

Контрольная сумма применяется для проверки правильности переноса программ, опубликованных на сайте или в печатных изданиях. Совпадение контрольной суммы, полученной после ввода программы в память ЭКВМ, с указанной автором существенно уменьшает вероятность ошибки.

В ответственных случаях может приводиться контрольная сумма не только всей программы, но и каждой страницы отдельно.

Приведенная ниже программа вычисляет контрольные суммы двух видов. Первый, это арифметическая сумма байт области. Ее значение может быть от 0 и не превышает 2550000. Второй, это однобайтовая сумма по модулю 2, получаемая командой XOR. Ее значение может быть от 0 до 255.




Контрольная сумма

  x0 x1 x2 x3 x4 x5 x6 x7 x8 x9
0x 1 0 0 П 0 × П 4 ИП 0 ×
1x П 0 Cx П А П С ИП 4 К ИПРГ В↑ ИП С + П С
2x ИП А K XOR ПА К ИП 4 F L0 14 Cx B↑ ИП А
3x ИП С С/П БП 00            

Для использования программа должна быть загружена в любую страницу вне той области, для которой подсчитывается контрольная сумма. Перед первым запуском нужно командой "Р БП адрес" перейти на начало этой программы.

Перед запуском вводится: "номер начальной страницы", "В↑", "число страниц". После останова в регистр X выводится арифметическая сумма, в регистр Y - сумма по модулю 2. После считывания результатов запуск программы можно повторить для другой области памяти.

Арифметическая контрольная сумма должна совпадать с суммой контрольных значений отдельных страниц. Общая сумма по модулю 2 является суммой по модулю 2 контрольных значений отдельных страниц.




Структура программы "Контрольная сумма"

Краткое описание структуры программы приведено ниже в таблице. Программа использует следующие регистры:
R0 - количество байт в области;
R4 - текущий адрес;
RA - сумма по модулю 2;
RC - арифметическая сумма.

Занесение значений в регистры перед запуском не требуется.

Адрес Выполняемые действия
00-06 Вычисление начального адреса и занесение его в R4
07-10 Вычисление количества байт в области и занесение в R0
11-13 Очистка RA и RC для накопления контрольных сумм
14-16 Начало цикла по R0. Считывание очередного байта из памяти программ в стек
17-19 Добавление байта к RC
20-23 Изменение контрольной суммы по модулю 2 в RA
24-26 Увеличение адреса в R4 на 1 (автоинкремент при косвенном обращении). Цикл по R0
27-31 Вывод контрольных сумм из RA и RC и останов
32-33 Переход на начало программы при следующем запуске

В качестве теста можно вычислить контрольные суммы самой программы. Арифметическая сумма байт для этой программы равна 18700, сумма по модулю 2 - 200. Предполагается, что остальные байты страницы равны 0FFh (т.е. 25510).




Применение циклических контрольных сумм также возможно, хотя не слишком оправдано при небольшой длине проверяемого текста.



НПП "СЕМИКО" (383) 271-01-25 (многоканальный)