Последние записи
- Преобразовать массив байт в вещественное число (single)
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
- Взаимодействие через командную строку
- Перенести программу из Delphi в Lazarus
- Определить текущую ОС
- Автоматическая смена языка (раскладки клавиатуры)
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
20th
Май
Поиск числа по двумерному массиву
Posted by Chas under Заметки, Пост-обзор
В программе поиска числа по двумерному массиву, что то не так с регистрами esi и ebx. Сама программа работает неправильно. Посмотрел в олли, а там адрес элемента неправильно в eax загружается. Попробовал к esi и ebx прибавлять по 4 (все таки тип данных двойное слово), программа немного другие числа в eax загружала, но все равно не те. Прошу помочь, в чем ошибка?
yuran666666:
Вроде так.. И без этого счетчика не получится — там же по нему проверяется были ли вообще совпадения
.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
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)