Задача на массивы - Assembler
Формулировка задачи:
Здравствуйте.
Есть такая задача:Даны массивы А и В с N = 4 элементов. Привести программу формирования массива С по следующему правилу: если Аi + Вi ≤ 0, то Сj = Вi.
Вот я пытался что-то сделать , но зашёл в тупик:
я не могу понять , как сравнить результат додавания элементов с нулём .прочитал про команду jle-это вроде как меньше или равно
и не пойму , как потом записать результат в массив С(
Помогите , пожалуйста , с этой задачей .И объясните , если сможете , как сравнивать с нулём , а потом по метке записать в третий массив
Заранее огромное спасибо за любую помощь !!!
.386 .model flat .data A db 1,2,3,4 ;первый массив B db -1,2,-3,4 ;второй массив C db 4 dup(0) ;третий массив .code _Start: lea esi,A ;адресс 1-го массива mov edi,offset B ;адресс 2-го массива m3:mov eax,[esi] ;число с массива A mov edx,[edi] ;число с массива B add eax,edx ;додаём число с массива А к числу с массива В cmp eax,0 ;сравниваем с нулём jle m1 ;перейти на m1 , если A+B <=0 ...... ret end _Start
Решение задачи: «Задача на массивы»
textual
Листинг программы
jg a1 //если результат А+В больше нуля переходим на метку a1 mov eax,[edi]//если Аi + Вi <= 0, то Сj = Вi mov [ebx],eax a1: ...
Объяснение кода листинга программы
- Проверяем условие: результат операции А + В больше нуля.
- Переходим на метку a1.
- Выполняем операцию загрузки: mov eax,[edi].
- Выполняем операцию сравнения: if Аi + Вi <= 0.
- Выполняем операцию присвоения: Сj = Вi.
- Выполняем операцию сохранения: mov [ebx],eax.
- ... (код для условия, когда результат А + В меньше или равен нулю).