Guest
Новичок
|
Здраствуйте, не могли бы вы мне помочь. У меня есть текст процедуры, которая ищет минимум. Что в ней нужно переделать, чтобы искать максимум. Честное слово самому не разобраться. Пробовал менять команды JA, JNE но не помогло. doFindMin - процедура поиска минимума doFindMinproc near;Начало описания процедуры pushsi;Сохраняем si в стеке pushcx;Сохраняем cx в стеке pushbx;Сохраняем bx в стеке movbx,8001h;Начальный минимум xorax,ax cld;Сбрасываем флаг направления (вперёд) @@lNext:;Начало цикла по эл-там матрицы lodsb;al = следующему эл-ту матрицы cmpax,0 jl@@lSkip cmpax,bx;Сравниваем al с текущим минимумом ja@@lSkip movbx,ax @@lSkip: loop@@lNext;Конец цикла (cx=cx-1; cx<>0?=>@@lNext) cmpbx,-1 clc jne@@lExit stc @@lExit: movax,bx popbx;Восстанавливаем bx из стека popcx;Восстанавливаем cx из стека popsi;Восстанавливаем si из стека ret;Выходим из процедуры doFindMinendp;Конец описания процедуры
|
Всего сообщений: Нет | Присоединился: Never | Отправлено: 15 янв. 2006 22:28 | IP
|
|
Guest
Новичок
|
mov bx,0 // нач максимум xor ax,ax //ax:=0 cld //clear direction flag Next: lodsb //al:=DS:[SI] cmp ax,0 //хм.. хотя прокатит jl Skip // если первый элемент <0, то выход cmp ax,bx //сравним с максимумом jb Skip // если меньше - продолжим mov bx,ax //сохраним новый максимум Skip: loop Next // декремент cx, если cx!=0, то продолжим cmp bx,-1 //сравним bx и -1 (зачем??) clc //очистим флаг переноса (зачем????) jne Exit // если bx не был равен -1, то флаг переноса оставим сброшенным stc //в противном случае - поставим флаг Exit: mov ax,bx //занесем в ax для возврата максимума Воаля!
|
Всего сообщений: Нет | Присоединился: Never | Отправлено: 15 янв. 2006 23:21 | IP
|
|
|