Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Verybuuu
0 / 0 / 0
Регистрация: 05.06.2009
Сообщений: 11
1

Максимальный элемент

05.06.2009, 19:18. Просмотров 850. Ответов 4
Метки нет (Все метки)

Помогите пожалуйста!...нужно переделать эту программу так чтобы из каждой строки был выбран максимальный элемент.
очень нужна помощь...заранее огромное спасибо

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
;1,если все элементы отрицательные,0 - в противном случае
.model small
.stack 256
.data
N    equ 4              ;количество строк
M    equ 5              ;количество столбцов
A    db 1,2,-3,-4,5
     db -6,7,-8,9,0
     db -1,3,2,-7,4
     db 6,-8,2,0,1
B    dw 4 dup (?)
;==================================================
.code
main:
    mov ax,@data
    mov ds,ax   ;настройка DS на сегмент данных
 
;для адресации элементов массива A используем регистры
;   BX - смещение текущей строки
;   SI - смещение элемента внутри текущей строки
;для адресации элементов массива B используем регистр
;   DI - смещение элемента
 
    mov cx,N    ;счетчик строк массива A
            ;(для организации цикла по строкам)
    mov bx,0    ;смещение первой строки A
    mov di,0    ;смещение первого элемента B         
stroka:     ;начало цикла по строкам А (внешний цикл)
    mov B[di],0 ;обнуляем текущий элемент массива B
            ;(подготовка для накопления суммы)
    mov dx,cx   ;спасаем cx (счетчик цикла по строкам)
    mov si,0    ;смещение первого элемента в строке массива A
    mov cx,M    ;счетчик столбцов массива A
            ;(для организации цикла по столбцам)
;-----------------
next:           ;начало цикла по столбцам (внутренний цикл)
     mov al,A[BX][SI]   ;поместить в AL текущий элемент массива А 
     cbw                ;преобразование AL в слово AX
 
     cmp A[Bx][SI],0   ;A[Bx][SI]-0 ?
     JGE P             ;если A[Bx][SI]>0 переход к метке P
     add SI,type A     ;установить si на следующий элемент в строке (+1)
     loop next         ; продолжить, если выбраны не все элементы строки
     mov B[di],1       ; присваиваем элементу массива B значение 1 
     jmp fin           ; переход к метке fin
     P: mov B[di],0    ;присваиваем элементу массива B значение 0
     fin:
     mov cx,dx        ;восстановим cx
     add bx,M*type A    ;установить bx на начало следующей строки A (+5)
     add di,type B  ;установить di на следующий элемент массива B(+2)
     loop stroka         ;продолжить, если проверены не все строки
      
      mov ax,4c00h  ;завершить выполнение программы
    int 21h
        end main
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2009, 19:18
Ответы с готовыми решениями:

Максимальный элемент
Помогите ,пожалуйста....очень срочно нужно зачёт получить, а лабы не сделаны(( Буду вам...

Максимальный элемент массива под диагоналями
Нужна помощь. Задается квадратный двумерный массив. В нем две главные диагонали. Требуется найти...

Поменять местами максимальный и минимальный элемент в одномерном массиве
могу только найти максимум , а минимум чет не получается но у меня не получается найти их позиции...

5. Напишите программу, которая выбирает из элементов заданного массива байтов максимальный элемент
5. Напишите программу, которая выбирает из элементов заданного массива байтов максимальный элемент.

В квадратной матрице поменять местами строку и столбец на пересечении которых находится максимальный элемент
В квадратной матрице поменять местами строку и столбец на пересечении которых находится...

4
CodeGrinder
0 / 0 / 0
Регистрация: 21.08.2008
Сообщений: 17
09.06.2009, 10:18 2
Еще актуально?
0
Verybuuu
0 / 0 / 0
Регистрация: 05.06.2009
Сообщений: 11
09.06.2009, 17:59  [ТС] 3
да, всё ещё нужна помощь....лаба так и не сделана....
0
CodeGrinder
0 / 0 / 0
Регистрация: 21.08.2008
Сообщений: 17
10.06.2009, 10:59 4
; в массив B записываются максимальные елементы строк
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
.model small
.stack 256
.data
N equ 4 ;количество строк
M equ 5 ;количество столбцов
A db 1,2,-3,-4,5
  db -6,7,-8,9,0
  db -1,3,2,-7,4
  db 6,-8,2,0,1
 
B dw 4 dup (?)
;================================================= =
.code
main:
mov ax,@data
mov ds,ax ;настройка DS на сегмент данных
 
;для адресации элементов массива A используем регистры
; BX - смещение текущей строки
; SI - смещение элемента внутри текущей строки
;для адресации элементов массива B используем регистр
; DI - смещение элемента
 
mov cx,N ;счетчик строк массива A
;(для организации цикла по строкам)
mov bx,0 ;смещение первой строки A
mov di,0 ;смещение первого элемента B
stroka: ;начало цикла по строкам А (внешний цикл)
mov B[di],-128 ;иничиализируем текущий элемент массива B
;(подготовка для проверки)
mov dx,cx ;спасаем cx (счетчик цикла по строкам)
mov si,0 ;смещение первого элемента в строке массива A
mov cx,M ;счетчик столбцов массива A
;(для организации цикла по столбцам)
;-----------------
next: ;начало цикла по столбцам (внутренний цикл)
mov al,A[BX][SI] ;поместить в AL текущий элемент массива А
cbw ;преобразование AL в слово AX
 
cmp ax,B[di] ; сравниваем
JL nextVal
mov B[di],ax ; сохраняем больший елемент
nextVal:
add SI,type A ;установить si на следующий элемент в строке (+1)
loop next ; продолжить, если выбраны не все элементы строки
jmp fin ; переход к метке fin
fin:
mov cx,dx ;восстановим cx
add bx,M*type A ;установить bx на начало следующей строки A(+5)
add di,type B ;установить di на следующий элемент массива B(+2)
loop stroka ;продолжить, если проверены не все строки
 
mov ax,4c00h ;завершить выполнение программы
int 21h
end main
0
Verybuuu
0 / 0 / 0
Регистрация: 05.06.2009
Сообщений: 11
10.06.2009, 11:23  [ТС] 5
огромное спасибо CodeGrinder, !!! зачёт почти мой)
0
10.06.2009, 11:23
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.06.2009, 11:23

В матрице поменять местами строку, содержащую минимальный элемент, со строкой, содержащей максимальный элемент
В произвольной матрице i=1, M , j=1, N поменять местами строку, содержащую минимальный элемент, со...

Максимальный отрицательный элемент
Помогите пожалуйста написать задачку в Tasm. Найти максимальный отрицательный элемент в матрице 3х4...

Максимальный элемент массива
Не получается найти максимальный элемент ( mov al,mas maxel: cmp al,mas jge m1 inc...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.