Найти максимальный элемент одномерного массива MASM - Assembler
Формулировка задачи:
Компилирует без ошибок, но exe вылетает в чем проблема? Подскажите пожалуйста
Решение задачи: «Найти максимальный элемент одномерного массива MASM»
textual
Листинг программы
.686 .model flat, stdcall option casemap :none include \masm32\include\windows.inc include \masm32\include\kernel32.inc include \masm32\include\masm32.inc include \masm32\include\msvcrt.inc include \masm32\macros\macros.asm includelib \masm32\lib\masm32.lib includelib \masm32\lib\msvcrt.lib .data title_ db "Результат = %d ",0 mass dw 10,-20,127,-16,43,94 mass_sz = ($ - mass)/2 .code start: lea esi, mass xor ebx, ebx mov ecx, mass_sz @@: lodsw cmp ax, bx cmovge bx, ax loop @B movsx ebx,bx invoke crt_printf, ADDR title_, ebx invoke crt__getch exit: invoke crt_exit,0 end start
Объяснение кода листинга программы
- Объявление переменной
mass
типаdw
(двойное слово), содержащей массив из 5 элементов. - Вычисление размера массива
mass
в словах и сохранение результата в переменнойmass_sz
. - Начало выполнения программы (метка
start
). - Установка регистра
esi
на адрес первого элемента массиваmass
. - Установка регистра
ebx
в 0. - Установка регистра
ecx
на значениеmass_sz
. - Использование команды
lodsw
для загрузки двух младших слов из массива в регистрыax
иbx
. - Сравнение содержимого регистров
ax
иbx
и, при необходимости, замена значенияbx
на значениеax
с помощью командыcmovge
. - Повторение шагов 7-8 до тех пор, пока не будет выполнено условие выхода из цикла (когда
ecx
станет равным 0). - Преобразование значения регистра
bx
в типsigned
с помощью командыmovsx
. - Использование функции
crt_printf
для вывода строкиtitle_
и значения переменнойebx
. - Использование функции
crt__getch
для получения ввода от пользователя. - Конец программы (метка
exit
). - Использование функции
crt_exit
для завершения программы. Следует отметить, что данный код написан для поиска максимального элемента в массиве, но он не является оптимальным решением для больших массивов из-за использования цикла. В данном случае, максимальное значение будет сохранено в регистреebx
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д