#1 25.11.07 10:18
[asm] сравнение.
Подскажите пожалуйста.
Имеются две области с данными:
Код::
amount_in db 10 dup (0) amount_out db 10 dup (0)
В них храняться целые числа. (Положительные для простоты).
Я делаю:
Код::
push ds pop es lea si, amount_out lea di, amount_in mov cx, length5 cld repe cmps amount_out, amount_in jae good mov ah, 40h mov bx, 1 mov cx, length7 mov dx, offset message7; Error! int 21h ret good: ret
Получается, что ошибка выводится, когда amount_in<amount_out
а если jae заменить на jbe, то
ошибка выводится, когда amount_in<=amount_out
Как добиться того, чтобы ошибка выводилась только при
amount_out<amount_in? менял местами записи в функции, ничего не получилось, уже совсем запутался.
Offline
#2 26.11.07 13:47
Re: [asm] сравнение.
Чет не совсем понятно.
Ты сравниваешь две цепочки байт ?
Как одна может быть больше другой?
Что вообще нужно то?
Сейчас твой код сравнивает побайтно две области
пока не наткнется на нужное условие.
А оно может выполнится и на первом байте.
Что значит in>out или in<out?
Там два массива. Как один может быть больше другого?
Или они рассматриваются как два 10-байтный числа?
Исправлено YARIK (26.11.07 13:55)
Offline
#4 26.11.07 17:57
Re: [asm] сравнение.
Кароче вот:
Сочетание команд условной передачи управления с результатами команды cmps (для чисел без знака)
Причина прекращения операции сравнения Команда условного перехода, реализующая переход по этой причине
операнд_источник > операнд_приемник ja
операнд_источник = операнд_приемник je
операнд_источник <> операнд_приемник jne
операнд_источник < операнд_приемник jb
операнд_источник <= операнд_приемник jbe
операнд_источник >= операнд_приемник jae
Пробуй JB или JA .
я так и не понял че у тебя там должно быть больше чего :)
P.S. Еще есть по ASMу задачи?
Исправлено YARIK (26.11.07 18:03)
Offline
#9 11.12.07 17:52
Re: [asm] сравнение.
Элементарно.
Массив(последовательность байт):
mas db 10 dup (0)
Минимальный и максимальный-заводишь две "переменные" - одна max(0) другая min(255). Идёшь по своему массиву.Загружаешь в приёмник символ, сравниваешь его с минимум и максимумом, если надо, меняешь их значения.
Загрузка в приёмник - lodsb
Offline

