Поиск и вывод минимального элемента массива - Assembler
Формулировка задачи:
Собственно программа готова, но выводит ошибки. Ругается на len. Прошу помочь исправить программу. Заранее спасибо!
.386 .model flat,stdcall option casemap:none include d:\masm32\include\kernel32.inc include d:\masm32\include\msvcrt.inc include d:\masm32\macros\macros.asm includelib d:\masm32\lib\msvcrt.lib includelib d:\masm32\lib\kernel32.lib .data array db 15,-100,50,0 len equ $ - array min db ? imin dw ? tpt db 'Result Min = al',0 .stack 100h .code start: mov ax,@data mov ds,ax mov cx,len dec cx xor di,di ; указатель на 1-й элемент, принятый за начальный минимум mov si,1 ; указатель на 2 элемент (его индекс 1) cycle: mov al,array[si] cmp al,array[di] jge next mov di,si next: inc si loop cycle mov imin,di ; запись индекса минимального элемента mov al,array[di] mov min,al ; запись значения минимального элемента ; ... mov ah,4ch int 21h invoke crt_printf, ADDR tpt, min invoke ExitProcess, 0 end start
Решение задачи: «Поиск и вывод минимального элемента массива»
textual
Листинг программы
.386 .model flat,stdcall option casemap:none include d:\masm32\include\kernel32.inc include d:\masm32\include\msvcrt.inc include d:\masm32\macros\macros.asm includelib d:\masm32\lib\msvcrt.lib includelib d:\masm32\lib\kernel32.lib .data array db 15,-100,50,0 len equ $ - array min dd ? imin dd ? tpt db 'Result Min = al',0 .code start: mov cx,len dec cx xor di,di ; указатель на 1-й элемент, принятый за начальный минимум mov si,1 ; указатель на 2 элемент (его индекс 1) cycle: mov al,array[si] cmp al,array[di] jge next mov di,si next: inc si loop cycle mov imin,di ; запись индекса минимального элемента mov al,array[di] mov min,al ; запись значения минимального элемента ; ... invoke crt_printf, ADDR tpt, min invoke ExitProcess, 0 end start
Объяснение кода листинга программы
В этом коде выполняется следующая последовательность действий:
- Задаётся длина массива (в единицах типа double) и сохраняется в переменной len.
- Задаются начальные значения для двух указателей: di — на элемент с предполагаемым минимальным значением, si — на следующий элемент.
- В цикле сравниваются текущие значения di и si. Если si содержит меньшее значение, то значения d и s меняются местами.
- Если элемент с индексом di больше или равен элементу с индексом si, то цикл продолжается.
- Когда цикл закончится, в переменной imin будет содержаться индекс минимального элемента, а в переменной min — его значение.
- Выводится сообщение, содержащее минимум.
- В конце работы программы вызывается функция ExitProcess, предназначенная для корректного завершения работы приложения.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д