Контрольные суммы массивов MIPS (Марс)
Рассчитать контрольные суммы
Ошибки могут быть введены, когда блок данных передается или сохраняется. Контрольная сумма - это общий термин для значения, которое рассчитывается из исходного блока данных и которое может использоваться для определения того, существует ли ошибка после передачи или сохранения данных. Существует много разных типов контрольных сумм с различными свойствами обнаружения ошибок. Контрольные суммы относятся к хеш-функциям, кодам с исправлением ошибок и криптографическим хеш-функциям.
Если контрольная сумма передается / сохраняется с блоком данных, то ее можно сравнить с пересчитанной контрольной суммой, чтобы определить, произошла ли ошибка.
Вы будете принимать строки в качестве входных данных, вычислять и распечатывать простую контрольную сумму для каждой строки. Сделайте вашу строку достаточно длинной, чтобы вместить 50 символов. Не забудьте оставить место для нулевого байта. Наш алгоритм контрольной суммы произведет значение, которое вы можете распечатать с помощью системного вызова для печати символа. Прекратить чтение строк, когда пользователь вводит ".".
Системный вызов для чтения строки (код системного вызова 8) добавляет новую строку к строке (перед нулевым байтом), если строка короче указанной максимальной длины. Если в прочитанной строке есть символ новой строки, замените его нулевым байтом. Не используйте символ новой строки при вычислении контрольной суммы.
Чтобы вычислить нашу контрольную сумму, сложите коды ASCII для символов в строке, затем найдите остаток после деления на 64. Наконец, добавьте код ASCII для пробела к остатку. Это даст вам контрольную сумму.
Подсказки Используйте инструкцию lbu для загрузки одного символа строки в регистр. Инструкция lbu загружает один байт в младший байт регистра и устанавливает все остальные биты равными 0. Помните, что то, что хранится в памяти для символа, является кодом ASCII для этого символа.
Найдите коды ASCII для пробела, новой строки (также называемой переводом строки) и точки / точки. Нулевой байт 0x0.
Ваши комментарии должны отражать цель заявлений. Пишите комментарии типа "добавить символ к контрольной сумме", а не комментарии типа "$f7 = $f7 + $f4". Не будьте упрямыми и ждите, чтобы оставить свои комментарии до конца. Очень важно прокомментировать использование вашего реестра.
Пример выполнения Введите строку (. До конца): Исправление ошибок! Контрольная сумма: C
Введите строку (. До конца): Java C C++ Контрольная сумма: >
Введите строку (. До конца): UNIX Linux Контрольная сумма: T
Введите строку (. До конца): macOS 10.12.2 Контрольная сумма: %
Введите строку (. До конца): .