Поиск числа по двумерному массиву. - Assembler

Узнай цену своей работы

Формулировка задачи:

В программе поиска числа по двумерному массиву, что то не так с регистрами esi и ebx. Сама программа работает неправильно. Посмотрел в олли, а там адрес элемента неправильно в eax загружается. Попробовал к esi и ebx прибавлять по 4 (все таки тип данных двойное слово), программа немного другие числа в eax загружала, но все равно не те. Прошу помочь, в чем ошибка?
P.S. На счет счетчика повторов foundtime, возможно вы скажите что он здесь ни к чему, потому что я не вывожу количество повторов. Просто не хотел переписывать. Извиняйте.

Решение задачи: «Поиск числа по двумерному массиву.»

textual
Листинг программы
.386
.model flat, stdcall
option casemap : none
include\masm32\include\windows.inc
include\masm32\include\kernel32.inc
include\masm32\include\user32.inc
includelib\masm32\lib\kernel32.lib
includelib\masm32\lib\user32.lib
.data
array dd 1,2,3,4,5,6,7,8,9,0; массив
elem dd 3; это искомое число
failed	db	"Нет такого элемента в массиве!",0
success	db	"Такой элемент в массиве присутствует ",0
.data?
foundtime dd ?
.code
start:
xor ebx,ebx
push sizeof array/(2*4)
pop ecx
external:; здесь начинается основной цикл
push ecx
push 2
pop ecx
lea esi,[array+ebx]
internal:; здесь начинается вложенный цикл
lodsd
cmp eax, elem
je here
loop internal; конец вложенного
here:
jecxz move_next
inc foundtime; инкремент счетчика кол-ва повторов искомого элемента
loop internal; если первый элемент совпал, это не значит, что второй уже не совпадет, если это был второй, то он же и последний
move_next:
pop ecx
add ebx,8
loop external; конец основного
xor eax,eax 
push eax ;аргумент ЭкситПроцесс
push MB_OK
push eax
cmp foundtime,eax
je not_found
push offset success сообщение, если найдено
jmp exit
not_found:; сообщение если не найдено совпадений
push offset failed
exit:
push eax
call MessageBoxA
call ExitProcess
end start

ИИ для рефератов и докладов


  • Экспорт Word по ГОСТу
  • Минимум 80% уникальности текста
  • Поиск релевантных источников в интернете
  • Готовый документ за 2 минуты

Оцени полезность:

13   голосов , оценка 3.923 из 5
Похожие ответы