Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
43 / 27 / 6
Регистрация: 27.09.2011
Сообщений: 280

Не получается сделать перестановку

24.01.2012, 20:04. Показов 868. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня есть программа в которой нужно:
1)поменять максимальный элемент первого массива с минимальным элементом второго массива.
2)поменять минимальный элемент первого массива с максимальным элементом второго массива.

Программа находит Максимальный и минимальный элемент верно, но я не знаю как сделать перестановку.
Тест:
2 6 1 7 9 3 первый массив
3 2 5 1 6 4 второй массив

Результат:
2 6 6 7 1 3 первый массив
3 2 5 9 1 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
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
include macro.lib
Data segment
  Razmer1 dw ?
  Razmer2 dw ?
     MinA dw ?
     MinB dw ?
     MaxA dw ?
     MaxB dw ?
        A dw 20 dup (?)
        B dw 20 dup (?)
       MA db 'Massiv A $'
       MB db 'Massiv B $'
        N db 'kol-vo chisel :$'
        I db 'Vvod massiva :$'
        V db 'Vivod massiva: $'
     Prob db '  $'
Data ends
Sst segment stack
db 128 dup (?)
Sst ends
Code segment
assume CS:Code,DS:Data,SS:Sst
 
  Vvod Proc
    mov Si,0
    message I
    crlf
    M2:key_$2bin
    crlf
    mov [Bx][Si],Ax
    inc  Si
    inc  Si
    loop M1
    jmp  M3
    M1:  jmp M2
    M3:  Ret
         Vvod EndP
 
  Maximum Proc
            
            mov  Si,0
            mov  Di,0   ;начальная позиция max
       M7:  mov  Ax,[Bx][Si]
            cmp  Ax,[Bx][Di]
            ja   M8
       M9:  Add  Si,2
            loop M7
            jmp  M10
            
       M8:  mov Di,Si
            jmp M9
       
      M10:  Ret
            Maximum EndP 
  
  Minimum Proc
           
            mov  Si,0
            mov  Di,0
       M11: mov  Ax,[Bx][Si]
            cmp  [Bx][Di],Ax
            ja   M12
       M13: Add  Si,2
            loop M11
            jmp  M14
       
       M12: mov Di,Si
            jmp M13
            
       M14: Ret
            Minimum EndP
 
  
  Vivod Proc
    mov Si,0
    m4:mov Ax,[Bx][Si]
    print_number
    message Prob
    inc  Si
    inc  Si
    loop M5
    jmp  M6
    M5:  jmp M4
    M6:  Ret
         Vivod EndP
 
Begin:
    mov Cx,Data
    mov Ds,Cx
 
 
   ;---Vvod A
    message MA
    crlf
    message N
    key_$2bin
    crlf
    mov Razmer1,Ax
    mov Cx,Razmer1
    LEA Bx,A
    Call Vvod
   ;---Vivod A
    message V
    mov Cx,Razmer1
    LEA Bx,A
    Call Vivod
   
   ;---Vvod B
    crlf
    message MB
    crlf
    message N
    key_$2bin
    crlf
    mov Razmer2,Ax
    mov Cx,Razmer2
    LEA Bx,B
    Call Vvod
   ;---Vivod B
    message V
    mov Cx,Razmer2
    LEA Bx,B
    Call Vivod
    
    crlf
 
    mov Cx,Razmer1
    LEA Bx,A
    Call Maximum
    mov Cx,Razmer1
    LEA Bx,A
    Call Minimum
 
    crlf
    
    mov Cx,Razmer2
    LEA Bx,B
    Call Maximum
    mov Cx,Razmer2
    LEA Bx,B
    Call Minimum
 
    
    mov Ax,4c00h
    int 21h
 
 
Code ends
end begin
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.01.2012, 20:04
Ответы с готовыми решениями:

Как сделать перестановку в строке
Всем привет. Нужна помощь по следующему вопросу. Входные данные: вводим строку без пробелов и ключ (последовательность чисел). Далее...

Как сделать перестановку тетрад?
Здравствуйте помогите пожалуйста с заданием! Перестановка 1-ой тетрады некоторого целого, неотрицательного числа (задается пользователем)...

Как сделать перестановку битов?
Помогитееее пожалуйста!!! Предложите реализацию перестановки 3-го и 4-го битов младшего байта целого числа с помошью программного кода.

4
 Аватар для Goodwin98
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
24.01.2012, 21:21
индекс максимального и минимального числа умножаете на 2(в слове 2 байта), загружаете в регистр значение, например, максимального числа, потом командой xchg меняете его со значением минимального числа из массива, потом засылаете полученного минимальне число в первый массив.
Что-то вроде...
Assembler
1
2
3
4
5
6
7
mov di,iMax
shl di,1
mov si,iMin
shl si,1
mov ax,[A + di]
xchg ax,[B + si]
mov [A+di],ax
0
43 / 27 / 6
Регистрация: 27.09.2011
Сообщений: 280
24.01.2012, 21:23  [ТС]
Goodwin98, я такого еще не изучал....
может можно легче перестановку сделать
то есть примером присвоения...mov??? или нет..
0
 Аватар для Goodwin98
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
24.01.2012, 22:28
ну вместо xchg пересылками из одного в другое тогда...
Assembler
1
2
3
4
mov ax,[A + di]
mov bx,[B + si]
mov [A+di],bx
mov [B + si],ax
0
43 / 27 / 6
Регистрация: 27.09.2011
Сообщений: 280
25.01.2012, 11:08  [ТС]
Всё, решил проблему.
Если кому надо, то программа работает
Перестановка происходит с 127 по 155 строчку программы.




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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
include macro.lib
Data segment
  Razmer1 dw ?
  Razmer2 dw ?
        A dw 20 dup (?)
        B dw 20 dup (?)
       MA db '     Massiv A $'
       MB db '     Massiv B $'
        N db 'kol-vo chisel :$'
        I db 'Vvod massiva :$'
       VA db 'Vivod massiva A: $'
       VB db 'Vivod massiva B: $'
       VP db '  Vivod massiva posle perestanovki $'
     Prob db '  $'
Data ends
Sst segment stack
db 128 dup (?)
Sst ends
Code segment
assume CS:Code,DS:Data,SS:Sst
 
  Vvod Proc
    mov Si,0
    message I
    crlf
    M2:key_$2bin
    crlf
    mov [Bx][Si],Ax
    inc  Si
    inc  Si
    loop M1
    jmp  M3
    M1:  jmp M2
    M3:  Ret
         Vvod EndP
 
  Maximum Proc
            
            mov  Si,0
            mov  Di,0   ;начальная позиция max
       M7:  mov  Ax,[Bx][Si]
            cmp  Ax,[Bx][Di]
            ja   M8
       M9:  Add  Si,2
            loop M7
            jmp  M10
            
       M8:  mov Di,Si
            jmp M9
       
      M10:  Ret
            Maximum EndP 
  
  Minimum Proc
           
            mov  Si,0
            mov  Di,0
       M11: mov  Ax,[Bx][Si]
            cmp  [Bx][Di],Ax
            ja   M12
       M13: Add  Si,2
            loop M11
            jmp  M14
       
       M12: mov Di,Si
            jmp M13
            
       M14: Ret
            Minimum EndP
 
  
  Vivod Proc
    mov Si,0
    m4:mov Ax,[Bx][Si]
    print_number
    message Prob
    inc  Si
    inc  Si
    loop M5
    jmp  M6
    M5:  jmp M4
    M6:  Ret
         Vivod EndP
 
Begin:
    mov Cx,Data
    mov Ds,Cx
 
 
   ;---Ввод массива A
    message MA
    crlf
    message N
    key_$2bin
    crlf
    mov Razmer1,Ax
    mov Cx,Razmer1
    LEA Bx,A
    Call Vvod
   ;---Вывод массива A
    message VA
    mov Cx,Razmer1
    LEA Bx,A
    Call Vivod
 
 
 
   
   ;---Ввод B
    crlf
    message MB
    crlf
    message N
    key_$2bin
    crlf
    mov Razmer2,Ax
    mov Cx,Razmer2
    LEA Bx,B
    Call Vvod
   ;---Вывод массива B
    message VB
    mov Cx,Razmer2
    LEA Bx,B
    Call Vivod
   
 
   ;---Нахождение максимального элемента массива А 
    mov Cx,Razmer1
    LEA Bx,A
    Call Maximum ;в Di находится номер максимального
    mov Bp,Di ;в Bp находится номер максимального числа
    mov Dx,A[Bp]
   ;---Нахождение минимального элемента массива B
    mov Cx,Razmer2
    LEA Bx,B
    Call Minimum ;в Di Находится номер минимального
    mov Ax,B[Di] ;в Ax находится минимальное число
    mov B[Di],Dx
    mov A[Bp],Ax
    
 
   ;---Нахождение минимального элемента массива A
    mov Cx,Razmer1
    LEA Bx,A
    Call Minimum
    mov Bp,Di
    mov Dx,A[Bp]
   ;---Нахождение максимального элемента массива B
    mov Cx,Razmer2
    LEA Bx,B
    Call Maximum
     mov Ax,B[Di]
     mov A[Bp],Ax
     mov B[Di],Dx
 
    crlf
    crlf
    
    
    
    ;---Вывод массива A
    message VA
    mov Cx,Razmer1
    LEA Bx,A
    Call Vivod
    
    crlf    
    
    ;---Вывод массива B
    message VB
    mov Cx,Razmer2
    LEA Bx,B
    Call Vivod
 
    
    mov Ax,4c00h
    int 21h
 
 
Code ends
end begin
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.01.2012, 11:08
Помогаю со студенческими работами здесь

Сделать перестановку букв в словах в обратном порядке
Мы вводим с клавиатуры предложение, как сделать перестановку букв в словах в обратном порядке?

Это печаль. Не знаю как сделать правильную перестановку
Дана целая матрица размерами (n*m) ,n,m<=10. Упорядочить(переставить) строки матрицы по возрастанию количества положительных элементов в...

Дан массив 49 элементов. Сделать перестановку чисел в 1ой и последней семерке
Подскажите, пожалуйста, как сделать перестановку чисел в семерке. Т.е. число в 0 индексом поменять с 6, 1 - с 5ым, 2ое с 4м, 3 остается...

создать одномерный массив X[1..10] случайным образом.Вывести его в строку.Затем сделать циклическую перестановку
создать одномерный массив X случайным образом.Вывести его в строку.Затем сделать циклическую перестановку элементов массива влево на два...

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Номеклатура. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru