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 массивах.
volvo
19.04.2009 21:28
Ну, поменяй чуть-чуть логику:
m1: mov al, A[si] ; элемент массива в регистр cmp al, max ; сравнение jle m2 ; если не больше, идем дальше, иначе - меняем максимум mov max, al m2: inc si ; увеличим индекс loop m1
Client
19.04.2009 21:36
так просто А так бы след выполнились команды после м2?
volvo
19.04.2009 23:13
А так как было у тебя - пришлось бы после JG добавлять безусловный переход на другую метку, которую надо было добавить непосредственно перед LOOP-ом. Оно тебе надо? Лишние метки, лишние переходы...
Client
20.04.2009 21:32
Вот еще вопрос: как сделать двойное условие? например надо вывести элементы больше 0 и меньше 10. Как тут быть?
volvo
20.04.2009 22:02
Что значит "как"? Двойное условие (в смысле, 2 условия подряд), сам же сказал:
m1: mov al, A[si] ; элемент массива в регистр cmp al, 0 ; сравнение jle m2 ; если меньше - идем к следующему элементу cmp al, 10 jge m2 ; Вывод содержимого AL m2: inc si ; увеличим индекс loop m1
Client
20.04.2009 23:14
Опять выручил Спасиб!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.