Разбить на части - Assembler
Формулировка задачи:
Здравствуйте.
В р-тате подсчёта MD5 хеша строки имею 7193518E6F5F0076EF05680742323F9C (3731393335313845364635463030373645463035363830373432333233463943 hex). Далее требуется разбить это на 16 двухбайтных кусочков и с каждым провести логическую операцию И (AND) c 8000001F.
Подскажите,как это реализовать.Своего багажа знаний недостаточно).
Решение задачи: «Разбить на части»
textual
Листинг программы
use16 org 100h mov si,md5 mov di,arr mov cx,16 cld @@: lodsw and ax,8000001Fh stosw loop @b ret md5 db '7193518E6F5F0076EF05680742323F9C' arr dw 16 dup(0)
Объяснение кода листинга программы
- Используется 16-битный режим адресации.
- Начальный адрес равен 100h.
- Переменная si содержит адрес строки, которую необходимо разбить.
- Переменная di содержит начальный адрес массива, в который необходимо разбить строку.
- Переменная cx содержит количество байтов в строке.
- Флаг направления (df) установлен в 1.
- Цикл @@ повторяется 16 раз.
- В каждой итерации цикла значение байтов из строки загружается в ax.
- Флаг направления (df) сбрасывается в 0, что приводит к использованию обратного хода переходов.
- Исполняется команда stosw, которая записывает значение ax в массив, начиная с адреса di.
- Команда loop используется для проверки условия выхода из цикла.
- После завершения цикла программа возвращает управление.
- Строка md5 содержит 16-байтовое значение '7193518E6F5F0076EF05680742323F9C'.
- Массив arr содержит 16 нулевых значений, которые будут заменены значениями из строки md5.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д