Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/19: Рейтинг темы: голосов - 19, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 07.01.2010
Сообщений: 7
1

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

08.01.2010, 13:03. Показов 3380. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В общем такая задача. Задан двумерный массив. Нужно подсчитать сумму отрицательных элементов и найти максимальный элемент из положительных. Я плохо разбираюсь в конструкциях и синтаксисе ассемблера, но заказывать не хочу. Как я думаю, алгоритм такой:
1) Проверяем элемент
2)Если больше нуля, то делаем его максимальным и сравниваем с другими.
2)Если меньше нуля, то суммируем.
С реализацией проблема:
Вот попытался написать, в итоге 8 непонятных ошибок может кто-нибудь объяснить в чем тут дело?
За спасибо.
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
IBM Macro Assembler/2 Version 1.00                          1/7/10 17:55:14
                                                            Page     1-1
 
                assume SS:seg1,ds:seg2,cs:seg3 
 0000               seg1 segment stack 
 0000  0080[            db 128 dup(?) 
        ??          
             ]  
                
 0080               seg1 ends 
 0000               seg2 segment 
 0000  07 FE 04 05 F8       mas1    DB  7,-2,4,5,-8 
 0005  02 04 FF F7 02               db      2,4,-1,-9,2 
 000A  07 08 09 FC FE               db      7,8,9,-4,-2 
 000F  04 05 06 02 FF               db      4,5,6,2,-1 
 0014  0005         len_mas1 dw 5    
  ??                sum db ?        
rgr.ASM(11) : error 5: Symbol is multi-defined SUM
 0017  ??           max db ? 
 0018               seg2 ends 
 0000               seg3 segment 
                 
 0000               entry: 
 0000  B8 ---- R        mov ax,seg2 
 0003  8E D8            mov ds,ax 
 0005  33 C0            xor ax,ax 
 0007  B9 0004          mov cx,4 
 000A  8D 1E 0000 R     lea bx,mas1 
 000E               l1: 
 000E  51           push cx 
 000F  33 F6            xor si,si 
 0011  8B 0E 0014 R     mov cx,len_mas1 
 0015               l2: 
 0015  80 38 00         cmp byte ptr[bx+si],0 
 0018  7C 16            jl sum 
rgr.ASM(28) : error 26: Reference to multi-defined 
 001A  8A 00            mov al,byte ptr[bx+si] 
 001C  A2 0017 R        mov max,al 
 001F  E2 00            loop max1 
                 
                 
 0021               max1: 
 0021  46           inc si 
                cmp max,byte ptr[bx+si] 
rgr.ASM(36) : error 52: Improper operand type 
 0022  7F 07            jg max2 
 0024  E2 E8            loop l1 
                 
                max2: 
rgr.ASM(40) : error 6: Phase error between passes 
                mov max,byte ptr[bx+si] 
rgr.ASM(41) : error 52: Improper operand type 
 002B  46           inc si 
 002C  E2 E7            loop l2 
 002E  59           pop cx 
 002F  03 1E 0014 R     add bx,len_mas1 
 0033  E2 D9            loop l1 
IBM Macro Assembler/2 Version 1.00                          1/7/10 17:55:14
                                                            Page     1-2
 
 
                 
                 
                sum: 
rgr.ASM(49) : error 5: Symbol is multi-defined SUM
                add sum,byte ptr[bx+si] 
rgr.ASM(50) : error 26: Reference to multi-defined 
 0035  46           inc si 
 0036  E2 DD            loop l2 
 0038  59           pop cx 
 0039  03 1E 0014 R     add bx,len_mas1 
 003D  E2 CF            loop l1 
                 
 003F  B4 09            mov ah,09h 
 0041  BA 0016 R        mov dx,offset sum 
rgr.ASM(58) : error 26: Reference to multi-defined 
 0044  CD 21            int 21h 
 0046  BA 0017 R        mov dx,offset max 
 0049  CD 21            int 21h 
 004B  B4 4C            mov ah,4ch 
 004D  CD 21            int 21h 
 004F               seg3 ends 
                end entry
Код
IBM Macro Assembler/2 Version 1.00                          1/7/10 17:55:14
                                                            Symbols-1


Segments and Groups:

                N a m e         	Size	Align	Combine Class

SEG1 . . . . . . . . . . . . . .  	0080	PARA	STACK	
SEG2 . . . . . . . . . . . . . .  	0018	PARA	NONE	
SEG3 . . . . . . . . . . . . . .  	004F	PARA	NONE	

Symbols:            

                N a m e         	Type	Value	Attr         

ENTRY  . . . . . . . . . . . . .  	L NEAR	0000	SEG3

L1 . . . . . . . . . . . . . . .  	L NEAR	000E	SEG3
L2 . . . . . . . . . . . . . . .  	L NEAR	0015	SEG3
LEN_MAS1 . . . . . . . . . . . .  	L WORD 	0014	SEG2

MAS1 . . . . . . . . . . . . . .  	L BYTE 	0000	SEG2
MAX  . . . . . . . . . . . . . .  	L BYTE 	0017	SEG2
MAX1 . . . . . . . . . . . . . .  	L NEAR	0021	SEG3
MAX2 . . . . . . . . . . . . . .  	L NEAR	002B	SEG3

SUM  . . . . . . . . . . . . . .  	L NEAR	0016	SEG2


     65 Source  Lines
     65 Total   Lines
     12 Symbols

  46720 Bytes symbol space free

      0 Warning Errors
      8 Severe  Errors
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.01.2010, 13:03
Ответы с готовыми решениями:

Дан двумерный массив [1.3,1.7] . В процедуре подсчитать сумму положительных и сумму отрицательных элементов массива
Пожалуйста помогите .Дан двумерный массив . В процедуре подсчитать сумму положительных и сумму...

Сформировать двумерный массив, найти произведение положительных элементов, найти максимальный элемент и его значения
Сформировать двумерный массив С (5,5) из случайных целых чисел на интервале .В массиве найти...

Вычислить сумму положительных элементов и максимальный элемент среди отрицательных
Нужно написать программы(консольное приложение) в делфи самым простым способом без...

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

6
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
08.01.2010, 13:24 2
Может быть дело в
error 5: Symbol is multi-defined SUM
?
IBM Macro Assembler/2 Version 1.00
Где ж вы такой откопали то ?
0
0 / 0 / 0
Регистрация: 07.01.2010
Сообщений: 7
08.01.2010, 13:31  [ТС] 3
Я вообще не понял что эта за ошибка. Сделал нулем, поменял на dw, тоже самое. Там в смысле надо учитывать знак или переполнение?
0
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
08.01.2010, 13:33 4
Там в коде 2 метки с этим именем.
0
0 / 0 / 0
Регистрация: 07.01.2010
Сообщений: 7
08.01.2010, 13:37  [ТС] 5
У нас лаба на нем была. А что слишком старый?

Добавлено через 3 минуты
Спасибо. Заметил.Теперь 6 ошибок!. И я правильно вывожу на экран?
0
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
08.01.2010, 13:48 6
Цитата Сообщение от fightclub Посмотреть сообщение
cmp max,byte ptr[bx+si]
Память не может сравниваться с памятью. Загрузите что-нибудь в регистр.

Цитата Сообщение от fightclub Посмотреть сообщение
У нас лаба на нем была. А что слишком старый?
Как сказать... похоже, что мы с ним почти ровесники... Точный год выпуска правда найти не могу.

Цитата Сообщение от fightclub Посмотреть сообщение
И я правильно вывожу на экран?
Я без понятия что там творится. Код нечитаем. Но судя по строке mov dx,offset sum - нет.
https://www.cyberforum.ru/asse... 54461.html
0
0 / 0 / 0
Регистрация: 07.01.2010
Сообщений: 7
08.01.2010, 13:59  [ТС] 7
В каких книгах окромя Юрова еще про массивы написано. Желательно с кодами.
0
08.01.2010, 13:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.01.2010, 13:59
Помогаю со студенческими работами здесь

Вычислить сумму квадратов положительных элементов и максимальный элемент среди отрицательных
Дан массив К(М).Вычислить сумму квадратов положительных элементов и максимальный элемент среди...

Дан двумерный массив 5х5. Найти сумму положительных элементов тех строк, в которых есть отрицательный элемент
Дан двумерный массив 5х5 ,найти сумму положительных элементов тех строк , в которых есть...

В строке содержащей максимальный элемент матрицы A(6,8), подсчитать сумму положительных элементов
В строке содержащей максимальный элемент матрицы A(6,8), подсчитать сумму положительных элементов

Подсчитать количество положительных и отрицательных элементов массива; найти максимальный среди нечётных
искал в форумах, но безрезультатно:-| 1)В массиве из n чисел есть положительные и отрицательные...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru