IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

 
 Ответить  Открыть новую тему 
> Массив, макс элемент
сообщение
Сообщение #1


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


sseg segment	
db 128 dup(?)
sseg ends
dseg segment
A db 1,2,3,4,5
B db 5,6,7,8,9
s db 1 dup(?)
max db 1 dup(?)
dseg ends
cseg segment
assumme ss:sseg,cs:cseg,ds:dseg
start:
mov ax,dseg
mov ds,ax
mov al,a[0]
mov max,al
mov si,0
mov cx,5
m1:
mov al,A[si] ;элемент массива в регистр
cmp al,max ;сравнение
inc si ; увеличим индекс
jg m2 ; если больше, то переход на м2, а если нет, то куда?
m2:
mov max,al
loop m1
mov al,max
mov s,al
mov al,b[0]
mov max,al
mov cx,5
mov si,0
m3:
mov al,b[si]
cmp al,max
inc si
jg m4
m4:
mov max,al
loop m3
mov AL,max
add s,al
mov ah,2h
mov dl,s
int 21h

mov ah,4ch
int 21h
cseg ends
end start
По заданию надо сложить 2 макс элемента в 2 массивах.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Ну, поменяй чуть-чуть логику:
m1:
mov al, A[si] ; элемент массива в регистр
cmp al, max ; сравнение
jle m2 ; если не больше, идем дальше, иначе - меняем максимум
mov max, al
m2:
inc si ; увеличим индекс
loop m1
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


так просто smile.gif
А так бы след выполнились команды после м2?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






А так как было у тебя - пришлось бы после JG добавлять безусловный переход на другую метку, которую надо было добавить непосредственно перед LOOP-ом. Оно тебе надо? Лишние метки, лишние переходы...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


Вот еще вопрос: как сделать двойное условие? например надо вывести элементы больше 0 и меньше 10. Как тут быть?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Что значит "как"? Двойное условие (в смысле, 2 условия подряд), сам же сказал:

m1:
mov al, A[si] ; элемент массива в регистр
cmp al, 0 ; сравнение
jle m2 ; если меньше - идем к следующему элементу
cmp al, 10
jge m2
; Вывод содержимого AL
m2:
inc si ; увеличим индекс
loop m1
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


Опять выручил
Спасиб! good.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 20.11.2019 3:23
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name