Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.02.2011, 18:54   #1
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию asm проблема с циклом

Люди, все время юзал max(массив), тут встретился с Ассемблером и заломился. Сори, везде пишут, что эта тема сильно раскручена, но не нашел. Как определить максимальный элемент массива? Сам алгоритм не доходит даже. Типа такого:
Код:
.386                      
      .model flat, stdcall      
      option casemap :none      

      include C:\masm32\include\windows.inc
      include C:\masm32\include\user32.inc
      include C:\masm32\include\kernel32.inc
      includelib C:\masm32\lib\user32.lib
      includelib C:\masm32\lib\kernel32.lib
  .CONST
  .DATA?
  .DATA    							
X db 3,7,9,2,11,47,10,9,3,6
.CODE
start:
lea esi,X
m1:
mov AL,[esi]
inc esi
cmp AL,[esi]
JL m1
invoke ExitProcess,0
end start
Ну нет, конечно. Предлагаем, как доработать)
Krasi вне форума Ответить с цитированием
Старый 23.02.2011, 19:06   #2
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Цитата:
Что за квадратные скобки вообще? Может так: Если число предыдущее меньше рассматриваемого, идем на метку m1, если больше, пишем в AL значение этого числа и идем на метку m1. Отладчиком толком не умею пользоваться, поэтому про код еще не соображаю.
Я скурился)) Так и не понял

Последний раз редактировалось Krasi; 23.02.2011 в 19:08.
Krasi вне форума Ответить с цитированием
Старый 24.02.2011, 04:18   #3
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Код:
.386                      
      .model flat, stdcall      
      option casemap :none      

      include C:\masm32\include\windows.inc
      include C:\masm32\include\user32.inc
      include C:\masm32\include\kernel32.inc
      includelib C:\masm32\lib\user32.lib
      includelib C:\masm32\lib\kernel32.lib
  .CONST
  .DATA?
  .DATA    							
x dw 1,3,5,7,9,11,13,15,17,20
.CODE
start:
mov CX,10
mov si,0
m1:
mov AX,x[si]
inc si
mov BX,x[si]
CMP AX,BX
DEC CX
JL m1
mov AX,BX
DEC CX
JNZ m1

invoke ExitProcess,0
end start
Что не так? Значение si изменяется до 5.
Аа, первый jump не работает. Сейчас команды местами поменяю. ... Поменял CMP с DEC. Теперь цикл бесконечен:D

Последний раз редактировалось Krasi; 24.02.2011 в 05:57.
Krasi вне форума Ответить с цитированием
Старый 24.02.2011, 06:18   #4
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Теперь думаю над этим:
Код:
.386                      
      .model flat, stdcall      
      option casemap :none      

      include C:\masm32\include\windows.inc
      include C:\masm32\include\user32.inc
      include C:\masm32\include\kernel32.inc
      includelib C:\masm32\lib\user32.lib
      includelib C:\masm32\lib\kernel32.lib
  .CONST
  .DATA?
  .DATA    							
x dw 1,3,5,20,9,11,13,15,17,20
.CODE
start:
xor EAX,EAX
xor EBX,EBX
mov CX,10
mov si,0
m1:
mov AX,x[si]
m2:
inc si
inc si
mov BX,x[si]
DEC CX
JZ nd
CMP AX,BX
JL m1
DEC CX
JNZ m2
nd:
invoke ExitProcess,0
end start
Обновил мессадж, так работает вплоть до последнего числа массива, дальше с нормальными данными все переходит на метку nd, а вот тут и начинаются левые замены. Да у меня всего две программы пока, в первой то же самое. Может с оформлением что? Потому что первую сам преподаватель после меня правил.

Последний раз редактировалось Krasi; 25.02.2011 в 03:56.
Krasi вне форума Ответить с цитированием
Старый 28.02.2011, 09:44   #5
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Вроде, все ок. Это ExitProcess шалит, шалопай.
Krasi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
asm проблема с циклом Krasi Помощь студентам 1 23.02.2011 21:28
Проблема с циклом while asp1k Общие вопросы Delphi 3 17.02.2011 14:29
проблема с циклом kiborgdelto Помощь студентам 1 16.10.2010 19:46
проблема с циклом Dima_D Общие вопросы Delphi 5 04.08.2010 16:41
Проблема с циклом.. POPOV Помощь студентам 3 29.04.2008 18:36