Начало сегмента данных с выравниванием на границу параграфа
резервирование памяти для переменной a длиной 1 байт
резервирование памяти для переменной b длиной 1 байт
резервирование памяти для переменной y длиной 1 байт
определение строковой константы mes "конец программы"
Конец сегмента данных
Начало стекового сегмента с выравниванием на границу параграфа
резервирование 30-ти байт и заполнение их значением 0
Конец стекового сегмента
Начало кодового сегмента с выравниванием на границу параграфа
Заголовок процедуры osn
Определение умолчаний адресации: кодовый сегмент по cs, сегмент данных по ds, сегмент стека по ss
загрузка в ax адреса сегмента данных
пересылка загрузка адреса сегмента данных в ds из ax
загрузка в bl значения 4
загрузка в al значения 7
умножение с учётом знака al на значение переменной b
прибавление к al значения переменной a
загрузка в cl значения 7
умножение с учётом знака al на cl
вычитание из al значения 3
преобразование al из байта в слово
деление с учётом знака ax на bl
запись al в переменную y
загрузка в dx смещения текстовой константы mes
загрузка в ax значения 0900h
вызов обработчика функций DOS для вывода строки на консоль
загрузка в ax значения 4C00h
вызов обработчика функций DOS для завершения программы
Конец процедуры osn
Конец сегмента кода
Конец программы
P.S. В программе допущены ошибки из-за незнания как работает команда imul - результат умножения будет в AX а не в AL.
Каждую строчку надоест описывать! Что конкретно интересует? И не надо выдумывать что разбираешься в асме, но сегодня тупишь! Там нет ничего сверхординарного!
Если интересуют команды со второго скрина, то это просто
первая показывает конец сегмента
вторая означает конец программы и метку, откуда программу начинать выполнять
остальное всё расписано, а что не расписано - то смотри команды в гугле, всё просто, всего около 200-300 команд в ассемблере