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

Найти второе по величине четное число в линейном массиве

09.05.2015, 12:18. Показов 1269. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Найти второе по величине четное число в линейном массиве
элементы массива - знаковые целые числа размером в слово (не менее 10) ) – должны вводиться с клавиатуры.
И ещё главное чтобы не менялись числа в массиве поэтому код немного странноват
Но иногда появляются ошибки например если все числа одинаковые
Пример правильной работы программы:
Исходный массив : 1 2 3 4 0 5
Ответ: 2
Вот что то наваял)
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
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
data segment
req db  10,13,'ENTER ARRAY:$'
error db "INCORRECT NUMBER$"
inpbuf  db  30 
len db  0 
DBbuF db 30 dup (?)
dwArray dw 60 dup (?)
dimension dw 0  
FIND dw 0 
msg1 db 10,13,"THE SECOND LARGEST EVEN NUMBER:$"
ends
 
stack segment
    dw   128  dup(0)
ends
 
code segment
start:
; set segment registers:
    mov ax, data
    mov ds, ax
    mov es, ax
;================================================================
;==========================input array===========================
;================================================================
    XOR CX, CX
    XOR BX, BX 
    
    mov  ah, 09h
    lea  dx, req
    int  21h
    
    mov ah, 0Ah
    lea dx, inpbuf      
    int 21h
    
    LEA SI, DBbuF
    LEA DI, dwArray
    
    MOV BX, 10              ;notation
    XOR DX, DX
nachalo:
    PUSH DX    
    cmp byte ptr [si],"-" 
    jnz positive
    mov BP,1  
    inc si
positive:
    xor ax,ax
cycle:    
    mov CL,[SI]
    CMP CL,0dh   ;ne konec li stroki         
    JZ  proverka
    CMP CL,20h
    JZ  proverka ; konec chisla (probel)
    
    CMP CL,'0'
    JL er
    CMP CL,'9'
    JA er
    
    SUB CL,'0'
    MUL BX
    ADD AX, CX
    INC SI
    JMP cycle
    
proverka:
    POP DX
    INC DX
    CMP BP,1
    JNZ neminys
    NEG AX
neminys:
    XOR BP, BP
    MOV [DI], AX
    ADD DI, 2
    INC SI
    CMP CL, 0dh
    JZ  endin    
    JMP nachalo
    
er:
    MOV DX, offset error
    MOV AH, 09
    INT 21h    
endin:
    MOV dimension, DX   
;================================================================
;==========================main part=============================
;================================================================       
    LEA   SI, dwArray
    MOV   CX, dimension
    XOR   DX, DX
    PUSH  CX
    PUSH  SI  
Max1LooP:    
    LODSW                   ;AX = DS:[SI], SI = SI + 2
    MOV   BX, AX            ;Parity
    AND   BX, 01h           ;Parity        
    CMP   BX, 0             ;Parity
    JNE   Skip1             ;if <>
    MOV   BP, AX            ;MAX -> BP
    INC   DX                ;the even number
Skip1:
    CMP   DX, 0             ;the even number (at least one)
    LOOPE Max1LooP
    JE    EXIT              ;no even numbers
;-----------------------------------------------------------------  
    POP  SI 
    POP  CX
    PUSH CX
    PUSH SI 
MaxLooP:    
    LODSW                   ;AX = DS:[SI], SI = SI + 2
    MOV   BX, AX            ;Parity
    AND   BX, 01h           ;Parity        
    CMP   BX, 0             ;Parity
    JNE   ODD               ;if <> 
    CMP   AX, BP            ;AX[SI] - BP[MAX]
    JL    LessEven          ;IF AX<BX -> lesseven (AX<max)    
    MOV   BP, AX            ;BP <- max[AX]         
    JMP   ODD
LessEven:
    MOV   DX, AX            ;
    ODD:
    LOOP  MaxLooP
;------------------------------------------------------------------- 
    POP  SI 
    POP  CX
    PUSH SI
    PUSH CX 
SecondMaxLooP:    
    LODSW                   ;AX = DS:[SI], SI = SI + 2
    MOV   BX, AX            ;Parity
    AND   BX, 01h           ;Parity        
    CMP   BX, 0             ;Parity
    JNE   OddNumber         ;if <> 
    CMP   AX, BP
    JE    OddNumber            
    MOV   DX, AX            ;MAX = AX  
    OddNumber:
    LOOP  SecondMaxLooP
    POP   CX
    POP   SI       
SecondMaxLooP2:    
    LODSW                   ;AX = DS:[SI], SI = SI + 2
    MOV   BX, AX            ;Parity
    AND   BX, 01h           ;Parity        
    CMP   BX, 0             ;Parity
    JNE   OddNumber1         ;if <> 
    CMP   AX, BP
    JE    OddNumber1            
    CMP   AX, DX
    JL    oddNumber1
    MOV   DX, AX 
    OddNumber1:
    LOOP  SecondMaxLooP2  
    MOV FIND, DX
;================================================================
;==========================display a message on the screen=======
;================================================================
    LEA DX, msg1
    MOV AH, 9
    INT 21h
;================================================================
;==========================Result output=========================
;================================================================    
    MOV AX, FIND
    TEST AX, AX
    JNS oi1
    MOV CX, AX
    MOV AH, 02H
    MOV DL, '-'
    INT 21H
    MOV AX, CX
    NEG AX
oi1:
    XOR CX, CX
    MOV BX, 10
oi2:
    XOR DX, DX
    DIV BX
    PUSH DX
    INC  CX
    TEST AX,AX
    JNZ  oi2
    MOV AH, 02H
oi3:
    POP DX
    CMP DL, 9
    JBE oi4
    ADD DL, 7
oi4:
    ADD DL, '0'
    INT 21H
    LOOP oi3       
      
    EXIT:
    mov ax, 4c00h ; exit to operating system.
    int 21h    
ends
 
end start
Добавлено через 13 часов 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
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
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
; multi-segment executable file template.
 
data segment
req        db  10,13,'ENTER ARRAY:$'
error      db  10,13,"INPUT ERROR$"
pkey       db  10,13,"press any key...$"
msg1       db  10,13,"THE SECOND LARGEST EVEN NUMBER:$"
inpbuf     db  50 
len        db  0 
DBbuF      db  50 dup (?)
dwArray    dw  100 dup (?)
dimension  dw  0  
FIND       dw  0 
ends
 
stack segment
    dw   128  dup(0)
ends
 
code segment
start:
; set segment registers:
    mov ax, data
    mov ds, ax
    mov es, ax
;================================================================
;==========================input array===========================
;================================================================
    XOR CX, CX
    XOR BX, BX 
InputStart:    
    mov  ah, 09h
    lea  dx, req
    int  21h
    
    mov ah, 0Ah
    lea dx, inpbuf      
    int 21h
    
    CMP len, 0
    JE  er
    LEA SI, DBbuF
    LEA DI, dwArray
    
    MOV BX, 10              ;notation
    XOR DX, DX
nachalo:
    PUSH DX    
    cmp byte ptr [si],"-" 
    jnz positive
    mov BP,1  
    inc si
positive:
    xor ax,ax
cycle:    
    mov CL,[SI]
    CMP CL,0dh   ;ne konec li stroki         
    JZ  proverka
    CMP CL,20h
    JZ  proverka ; konec chisla (probel)
    
    CMP CL,'0'
    JL er
    CMP CL,'9'
    JA er
    
    SUB CL,'0'
    MUL BX
    ADD AX, CX
    INC SI
    JMP cycle
    
proverka:
    POP DX
    INC DX
    CMP BP,1
    JNZ neminys
    NEG AX
neminys:
    XOR BP, BP
    MOV [DI], AX
    ADD DI, 2
    INC SI
    CMP CL, 0dh
    JZ  endin    
    JMP nachalo    
er:
    MOV DX, offset error
    MOV AH, 09
    INT 21h
    ;======================
    ;=wait for any key....=
    ;======================      
    lea dx, pkey
    mov ah, 9
    int 21h
    ;=====================   
    ;=====================  
    mov ah, 1
    int 21h
    ;======================
    ;=====clear screen=====
    ;======================   
    MOV  AH, 00H
    MOV  AL, 03H  
    INT    10H  
    JMP InputStart 
           
endin:
    MOV dimension, DX   
;================================================================
;==========================main part=============================
;================================================================       
    LEA   SI, dwArray
    MOV   CX, dimension
    XOR   DX, DX
    PUSH  CX
    PUSH  SI  
checkARRAY:
    LODSW                   ;AX = DS:[SI], SI = SI + 2 
    MOV   BX, AX
    AND   BX, 01h           ;Parity        
    CMP   BX, 0             ;Parity
    JNE   wrong             ;if <> 
    MOV   BP, AX
    INC   DL                ;the even number
wrong:
    CMP   DL, 2h            ;the even number (at least one)
    LOOPNE checkARRAY       ;esli 2 nechetnix
    JC    er                ;if CF=1   -->menshe dvyh nechetnix  
    DEC  DL                 ;est yzhe odno chetnoe chislo
    POP  SI
    POP  CX
    PUSH CX
    PUSH SI
checkARRAY1:
    LODSW                   ;AX = DS:[SI], SI = SI + 2 
    MOV   BX, AX
    AND   BX, 01h           ;Parity        
    CMP   BX, 0             ;Parity
    JNE   wrong1            ;if <> 
    CMP   BP, AX
    JE    wrong1
    INC   DL                ;the even number
wrong1:
    CMP   DL, 2h            ;the even number (at least one)
    LOOPNE checkARRAY1      ;esli 2 nechetnix
    JC    er                ;if CF=1   -->menshe dvyh nechetnix
    POP  SI
    POP  CX
    PUSH CX
    PUSH SI
Max1LooP:    
    LODSW                   ;AX = DS:[SI], SI = SI + 2
    MOV   BX, AX            ;Parity
    AND   BX, 01h           ;Parity        
    CMP   BX, 0             ;Parity
    JNE   Skip1             ;if <>
    MOV   BP, AX            ;MAX -> BP
    INC   DX                ;the even number
Skip1:
    CMP   DX, 0             ;the even number (at least one)
    LOOPE Max1LooP
    JE    er                 ;no even numbers
;-----------------------------------------------------------------  
    POP  SI 
    POP  CX
    PUSH CX
    PUSH SI 
MaxLooP:    
    LODSW                   ;AX = DS:[SI], SI = SI + 2
    MOV   BX, AX            ;Parity
    AND   BX, 01h           ;Parity        
    CMP   BX, 0             ;Parity
    JNE   ODD               ;if <> 
    CMP   AX, BP            ;AX[SI] - BP[MAX]
    JL    ODD               ;IF AX<BP -> lesseven (AX<max)    
    MOV   BP, AX            ;BP <- max[AX]         
    ODD:
    LOOP  MaxLooP
;------------------------------------------------------------------- 
    POP  SI 
    POP  CX
    PUSH SI
    PUSH CX 
SecondMaxLooP:    
    LODSW                   ;AX = DS:[SI], SI = SI + 2
    MOV   BX, AX            ;Parity
    AND   BX, 01h           ;Parity        
    CMP   BX, 0             ;Parity
    JNE   OddNumber         ;if <> 
    CMP   AX, BP
    JE    OddNumber            
    MOV   DX, AX            ;MAX = AX  
    OddNumber:
    LOOP  SecondMaxLooP
    POP   CX
    POP   SI       
SecondMaxLooP2:    
    LODSW                   ;AX = DS:[SI], SI = SI + 2
    MOV   BX, AX            ;Parity
    AND   BX, 01h           ;Parity        
    CMP   BX, 0             ;Parity
    JNE   OddNumber1        ;if <> 
    CMP   AX, BP            ;AX-[SI] BP-max1
    JE    OddNumber1        ;if = then exit    
    CMP   AX, DX            ;AX-[SI] DX-max2
    JL    oddNumber1        ;if max>AX then exit
    MOV   DX, AX            ;max=AX
    OddNumber1:
    LOOP  SecondMaxLooP2  
    MOV FIND, DX            ;ANSWER
;================================================================
;==========================display a message on the screen=======
;================================================================
    LEA DX, msg1
    MOV AH, 9
    INT 21h
;================================================================
;==========================Result output=========================
;================================================================    
    MOV AX, FIND
    TEST AX, AX
    JNS oi1
    MOV CX, AX
    MOV AH, 02H
    MOV DL, '-'
    INT 21H
    MOV AX, CX
    NEG AX
oi1:
    XOR CX, CX
    MOV BX, 10
oi2:
    XOR DX, DX
    DIV BX
    PUSH DX
    INC  CX
    TEST AX,AX
    JNZ  oi2
    MOV AH, 02H
oi3:
    POP DX
    CMP DL, 9
    JBE oi4
    ADD DL, 7
oi4:
    ADD DL, '0'
    INT 21H
    LOOP oi3       
    ;======================
    ;=wait for any key....=
    ;======================      
    lea dx, pkey
    mov ah, 9
    int 21h
    ;=====================   
    ;=====================  
    mov ah, 1
    int 21h      
    EXIT:
    mov ax, 4c00h ; exit to operating system.
    int 21h    
ends
 
end start ; set entry point and stop the assembler.
Апгрейт))) нет вроде ошибок если найдёте плз отпишите
попробуйте забагать если получится напишите какие числа пробовали
И отпишите как улучшить программу если у кого есть какие-нибудь соображения
И если у кого будет интерес просмотреть код МОЖНО ЛИ СДЕЛАТЬ ТАМ ГДЕ У МЕНЯ САМАЯ ОСНОВНАЯ ЧАСТЬ ЧТО БЫ ОБОЙТИСЬ БЕЗ РЕГИСТРОВ BP ибо говорят что BP используют только для стека
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.05.2015, 12:18
Ответы с готовыми решениями:

В массиве найти второе по величине число
Помогите пожалуйста в решении задач.. Составить программу, которая в массиве A находит второе по...

В массиве найти второе по величине число
составить программу, которая в массиве A(N) находит второе по величине число(вывести на печать...

Найти в массиве второе по величине число
Помогите пожалуста написать программу, которая в массиве {10,20,4,60, 50} найдет второе по величине...

В массиве A[n] найти второе по величине число
Составить программу, которая в массиве A находит второе по величине число (вывести на печать число,...

15
83 / 19 / 5
Регистрация: 01.02.2015
Сообщений: 655
09.05.2015, 12:20  [ТС] 2
exe.rar
ВОт откомпилированный файл
0
6770 / 2739 / 384
Регистрация: 17.02.2013
Сообщений: 4,047
09.05.2015, 15:19 3
Цитата Сообщение от Shura_deg Посмотреть сообщение
ОБОЙТИСЬ БЕЗ РЕГИСТРОВ BP ибо говорят что BP используют только для стека
Часто используют для стека. Но это-же не значит, что его нельзя использовать иначе. Пока ты не адресуешься по BP косвенно - это регистр, как регистр. А вот косвенно - он, да, адресует по умолчанию в сегменте SS.

Добавлено через 6 минут
Assembler
1
2
3
4
5
6
7
nachalo:
    PUSH DX    
    cmp byte ptr [si],"-" 
    jnz positive
    mov BP,1  
    inc si
positive:
Итак, если символ минус, то BP=1. А в противном случае ? А в противном случае BP не определен. Может тоже 1.

Добавлено через 30 минут
Так некорректный у тебя алгоритм.

Первый цикл после метки endin.
Ты запихиваешь в BP второе по порядку четное число в массиве.
Если четных чисел меньше двух идешь на ошибку.

Второй цикл - ты ищещь четное, не равное найденному в первом
цикле. Если не найдешь, то идешь на ошибку.

Вывод - если все четные числа одинаковые и хоть сколько их,
у тебя обязательно уйдет на ошибку.

Добавлено через 20 минут
Мысли проще.
Массив будем просмотривать только ОДИН РАЗ !
У тебя два флага состояния :
Флаг_1 - нашли первое четное число.
Флаг 2 - нашли второе четное число.

Код
Флаг1 = ЛОЖЬ
Флаг2 = ЛОЖЬ
Цикл:
 ЧИСЛО = очередной_элемент_массива
 Если ЧИСЛО нечетно, то GOTO Конец_цикла
 Если Флаг 1 = ЛОЖЬ, то
       НАИБОЛЬШЕЕ = ЧИСЛО
       Флаг_1 = ПРАВДА
       GOTO Конец_цикла
 Если Флаг 2 = ЛОЖЬ, то
       Если ЧИСЛО <= НАИБОЛЬШЕЕ
            ИСКОМОЕ = ЧИСЛО
       в противном случае
            ИСКОМОЕ = НАИБОЛЬШЕЕ
            НАИБОЛЬШЕЕ = ЧИСЛО
       Флаг_2 = ПРАВДА
       GOTO Конец_цикла
 Если ЧИСЛО > НАИБОЛЬШЕЕ
      ИСКОМОЕ = НАИБОЛЬШЕЕ
      НАИБОЛЬШЕЕ = ЧИСЛО
      GOTO Конец_цикла
 Если ЧИСЛО > ИСКОМОЕ
      ИСКОМОЕ = ЧИСЛО
Конец_цикла:
LOOP Цикл
Если Флаг_2 = ЛОЖЬ, то GOTO на ошибку
Печатаем ИСКОМОЕ
Добавлено через 7 минут
И еще :
Assembler
1
2
3
4
    MOV   BX, AX            ;Parity
    AND   BX, 01h           ;Parity        
    CMP   BX, 0             ;Parity
    JNE   OddNumber         ;if <>
Словом Parity называют нечто другое. И вообще это делается так :
Assembler
1
2
    TEST  AX, 01h           ;А если TEST AL,01H , то еще и на байт короче
    JNZ   OddNumber
Добавлено через 3 минуты
Короче, простые правила :
CMP - это то-же самое, что SUB, только результат не пишется никуда. Изменяются только флаги.
TEST - это то-же самое, что AND, только результат не пишется никуда. Изменяются только флаги.

Добавлено через 3 минуты
В свете этого :
Assembler
1
2
3
4
5
    CMP CL,'0'
    JL er
    CMP CL,'9'
    JA er
    SUB CL,'0'
смело пишем, как
Assembler
1
2
3
4
    SUB CL,'0'
    JL er
    CMP CL,9
    JA er
1
83 / 19 / 5
Регистрация: 01.02.2015
Сообщений: 655
09.05.2015, 15:42  [ТС] 4
Цитата Сообщение от Ethereal Посмотреть сообщение
Итак, если символ минус, то BP=1. А в противном случае ? А в противном случае BP не определен. Может тоже 1.
я имел ввиду что мне важно было единица там или что то иное
забыл наверое правда сперва указать xor bp, bp и это мне нужно было для этого фрагмента кода:
Assembler
1
2
3
4
5
6
proverka:
    POP DX
    INC DX
    CMP BP,1
    JNZ neminys
    NEG AX
Добавлено через 2 минуты
Цитата Сообщение от Ethereal Посмотреть сообщение
Если четных чисел меньше двух идешь на ошибку.
правильно ибо мне нужно найти второе по величине чётное число а следовательно если одно чётное то не будет результата

Добавлено через 33 секунды
Цитата Сообщение от Ethereal Посмотреть сообщение
Вывод - если все четные числа одинаковые и хоть сколько их,
у тебя обязательно уйдет на ошибку.
так да я это специально подгонял....

Добавлено через 23 секунды
тобишь пользователь некоорректо вводит массив
0
6770 / 2739 / 384
Регистрация: 17.02.2013
Сообщений: 4,047
09.05.2015, 15:43 5
Цитата Сообщение от Shura_deg Посмотреть сообщение
правильно ибо мне нужно найти второе по величине чётное число а следовательно если одно чётное то не будет результата
К этому циклу претензий нет. Если в массиве два и более четных и все одинаковые, то ошибка будет на следующем цикле.
1
83 / 19 / 5
Регистрация: 01.02.2015
Сообщений: 655
09.05.2015, 15:44  [ТС] 6
Цитата Сообщение от Ethereal Посмотреть сообщение
Словом Parity называют нечто другое.
к слову https://translate.google.ru/#r... 1%82%D1%8C
0
6770 / 2739 / 384
Регистрация: 17.02.2013
Сообщений: 4,047
09.05.2015, 15:44 7
Цитата Сообщение от Shura_deg Посмотреть сообщение
так да я это специально подгонял....
Если массив 2 2 2 2 2 2 , то второе по величине четное есть и оно 2
1
83 / 19 / 5
Регистрация: 01.02.2015
Сообщений: 655
09.05.2015, 15:47  [ТС] 8
Цитата Сообщение от Ethereal Посмотреть сообщение
К этому циклу претензий нет. Если в массиве два и более четных и все одинаковые, то ошибка будет на следующем цикле.
не додумал как в один уместить...

Добавлено через 2 минуты
Цитата Сообщение от Ethereal Посмотреть сообщение
Если массив 2 2 2 2 2 2 , то второе по величине четное есть и оно 2
так то да но это же не логично ....
2=2
а если второе по величине следовательно оно не <> друг другу....
но конечно можно так как и вы сделать чисто выйти сразу на ответ указав это чётное число в качестве ответа
0
6770 / 2739 / 384
Регистрация: 17.02.2013
Сообщений: 4,047
09.05.2015, 16:03 9
Цитата Сообщение от Shura_deg Посмотреть сообщение
К слову после исполнения каждой инструкции процессора в слове состояния процессора выставляется или нет флажок Parity. И у него совсем иной смысл. Так-что за словом Parity в мире ассемблера закреплен иной смысл. Смысл паритета, а не четности.
Это в русском языке четность - это четный или нечетный. А в английском - это even или odd. Чтобы не путать с Parity в смысле паритета пишут в комментариях "Even or Odd ?" "Is it even ?" и т.д.

Добавлено через 1 минуту
Цитата Сообщение от Shura_deg Посмотреть сообщение
так то да но это же не логично ....
2=2
Ну в математическом смысле у массива одинаковых чисел есть и наибольшее значение и наименьшее. Просто тот, кто давал тебе задание, наверняка мыслит именно так.

Добавлено через 8 минут
Ну доработай мой алгоритм так :
Assembler
1
2
3
4
5
...
LOOP Цикл
Если Флаг_2 = ЛОЖЬ, то GOTO на ошибку
Если ИСКОМОЕ = НАИБОЛЬШЕЕ, то напечатать "А введи ка ты мне что-то другое, мил человек"
Печатаем ИСКОМОЕ
1
83 / 19 / 5
Регистрация: 01.02.2015
Сообщений: 655
09.05.2015, 19:29  [ТС] 10
Цитата Сообщение от Ethereal Посмотреть сообщение
Мысли проще.
Массив будем просмотривать только ОДИН РАЗ !
У тебя два флага состояния :
Флаг_1 - нашли первое четное число.
Флаг 2 - нашли второе четное число.
ЧТО означает в вашем псевдокоде ИСКОМОЕ?
ЧТО означает в вашем псевдокоде ЧИСЛО?

Добавлено через 48 минут
ПОХОДУ ПОНЯЛ ИСКОМОЕ ТО ЧТО СЛЕДУЕТ ОТЫСКАТЬ
А ЧИСЛО ЭТО ТЕКУЩЕЕ ЧИСЛО В МАССИВЕ

Добавлено через 36 минут
пытался разобраться с предложенным вами алгоритмом да недопонял....
гляньте может чё намудрил...
Assembler
1
2
3
DwArray     dw 4, 3, 2
len         dw 3  
find        dw 0
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
    LEA SI, DwArray 
    MOV CX, len
    XOR BX, BX     
cycle:
LODSW
TEST  AX, 01h
JNZ   EndLoop
;-------------------
CMP   BL, 0
JE    @1
JMP   @22
@1:
MOV   DX, AX
MOV   BL, 1
;-------------------
@22:
CMP   BH, 0
JE    @2
JMP   @33
@2:
CMP   AX, DX
JLE   @3
MOV   BP, DX
MOV   DX, AX
MOV   BH, 1
JMP   EndLoop
@3:
MOV   BP, AX 
MOV   BH, 1
JMP   EndLoop
;-------------------
@33:
CMP   AX, DX
JL    @4
MOV   BP, DX
MOV   DX, AX
JMP   EndLoop
@4:
CMP   AX, BP
JL    EndLoop
MOV   BP, AX
EndLoop:
LOOP  cycle
CMP   BH, 0
JE    ER
MOV   FIND, BP
 
er:
 
            
 
    
    mov ax, 4c00h 
    int 21h
0
6770 / 2739 / 384
Регистрация: 17.02.2013
Сообщений: 4,047
09.05.2015, 21:55 11
Цитата Сообщение от Shura_deg Посмотреть сообщение
ЧТО означает в вашем псевдокоде ИСКОМОЕ?
Цитата Сообщение от Shura_deg Посмотреть сообщение
Найти второе по величине четное число
Вот это и значит.

Добавлено через 57 секунд
Цитата Сообщение от Shura_deg Посмотреть сообщение
ЧТО означает в вашем псевдокоде ЧИСЛО?
Вот это :
Цитата Сообщение от Ethereal Посмотреть сообщение
ЧИСЛО = очередной_элемент_массива
Добавлено через 29 минут
Цитата Сообщение от Shura_deg Посмотреть сообщение
пытался разобраться с предложенным вами алгоритмом да недопонял....
Попробую объяснить доступно :
Цитата Сообщение от Ethereal Посмотреть сообщение
Код
Флаг1 = ЛОЖЬ ;Мы еще ни хрена не нашли
Флаг2 = ЛОЖЬ ;Мы еще ни хрена не нашли
Цикл:
  ЧИСЛО = очередной_элемент_массива
  Если ЧИСЛО нечетно, то GOTO Конец_цикла
  ;Врубаемся, что нашли четное число
  Если Флаг 1 = ЛОЖЬ, то
    ;Здесь втыкаем %ули будем делать, если нашли первое четное число
    НАИБОЛЬШЕЕ = ЧИСЛО
    Флаг_1 = ПРАВДА
    GOTO Конец_цикла
  Если Флаг 2 = ЛОЖЬ, то
    ;Здесь втыкаем %ули будем делать, если нашли второе четное число
    Если ЧИСЛО <= НАИБОЛЬШЕЕ
      ;Здесь втыкаем %ули будем делать, если второе <= первого
      ИСКОМОЕ = ЧИСЛО
    в противном случае
      ;Здесь втыкаем %ули будем делать, если второе > первого
      ИСКОМОЕ = НАИБОЛЬШЕЕ
      НАИБОЛЬШЕЕ = ЧИСЛО
    Флаг_2 = ПРАВДА
    GOTO Конец_цикла
  ;Здесь врубаемся, что два четных уже было и еще привалило
  Если ЧИСЛО > НАИБОЛЬШЕЕ
    ;Здесь втыкаем %ули будем делать, если привалило число > наибольшего
    ; из тех, что привалили раньше
    ИСКОМОЕ = НАИБОЛЬШЕЕ
    НАИБОЛЬШЕЕ = ЧИСЛО
    GOTO Конец_цикла
  ;Врубаемся, что привалило число <= наибольшего из тех, что привалили
  ; раньше. А значит НАИБОЛЬШЕЕ корректировать не надо.
  Если ЧИСЛО > ИСКОМОЕ
    ;Здесь втыкаем %ули будем делать, если привалило число > второго
    ; по величине из тех, что привалили раньше.
    ИСКОМОЕ = ЧИСЛО
    ;В противном случае (если привалило число <= второго по величине из
    ; приваливших раньше) не будем делать ни хрена. Второе по величине
    ; число (т.е. ИСКОМОЕ) корректировать не надо.
Конец_цикла:
LOOP Цикл
Если Флаг_2 = ЛОЖЬ, то GOTO на ошибку
Если ИСКОМОЕ = НАИБОЛЬШЕЕ печатаем, что все четные одинаковы и юзер тормоз
Печатаем ИСКОМОЕ
Добавлено через 5 минут
У тебя одна ошибка :
Assembler
1
2
3
4
Если Флаг 1 = ЛОЖЬ, то
       НАИБОЛЬШЕЕ = ЧИСЛО
       Флаг_1 = ПРАВДА
       GOTO Конец_цикла <- Вот это !!!
Assembler
1
2
3
4
5
6
7
8
9
;-------------------
CMP   BL, 0
JE    @1
JMP   @22
@1:
MOV   DX, AX
MOV   BL, 1
JMP   EndLoop   <------------ Забыл !!!
;-------------------
1
83 / 19 / 5
Регистрация: 01.02.2015
Сообщений: 655
11.05.2015, 18:04  [ТС] 12
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
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
; multi-segment executable file template.
 
data segment
req        db  10,13,'ENTER ARRAY:$'
error      db  10,13,"INPUT ERROR$"
pkey       db  10,13,"press any key...$"
msg1       db  10,13,"THE SECOND LARGEST EVEN NUMBER:$"  
msg2       db  10,13,"ALL EVEN IDENTICAL, RETYPE$"
inpbuf     db  50 
len        db  0 
DBbuF      db  50 dup (?)
dwArray    dw  100 dup (?)
dimension  dw  0   
FIND dw 0
ends
 
stack segment
    dw   128  dup(0)
ends
 
code segment
start:
; set segment registers:
    MOV AX, DATA
    MOV DS, AX
    MOV ES, AX 
;================================================================
;==========================input array===========================
;================================================================
InputRESTART:
    XOR CX, CX
    XOR BX, BX
    XOR BP, BP
    XOR AX, AX 
InputStart:    
    mov  ah, 09h
    lea  dx, req
    int  21h
    
    mov ah, 0Ah
    lea dx, inpbuf      
    int 21h
    
    CMP len, 0
    JE  er
    LEA SI, DBbuF
    LEA DI, dwArray
    
    MOV BX, 10              ;notation
    XOR DX, DX
nachalo:
    PUSH DX    
    cmp byte ptr [si],"-" 
    jnz positive
    mov BP,1  
    inc si
positive:
    xor ax,ax
Inputcycle:    
    mov CL,[SI]
    CMP CL,0dh   ;ne konec li stroki         
    JZ  proverka
    CMP CL,20h
    JZ  proverka ; konec chisla (probel)
    
    SUB CL,'0'
    JL er
    CMP CL,9
    JA er
    MUL BX
    ADD AX, CX
    INC SI
    JMP Inputcycle
    
proverka:
    POP DX
    INC DX
    CMP BP,1
    JNZ neminys
    NEG AX
neminys:
    XOR BP, BP
    MOV [DI], AX
    ADD DI, 2
    INC SI
    CMP CL, 0dh
    JZ  endin    
    JMP nachalo    
er:
    MOV DX, offset error
    MOV AH, 09
    INT 21h
    ;======================
    ;=wait for any key....=
    ;======================      
    lea dx, pkey
    mov ah, 9
    int 21h
    ;=====================   
    ;=====================  
    mov ah, 1
    int 21h
    ;======================
    ;=====clear screen=====
    ;======================   
    MOV  AH, 00H
    MOV  AL, 03H  
    INT    10H  
    JMP InputRESTART 
           
endin:
    MOV dimension, DX   
;================================================================
;==========================main part=============================
;================================================================             
    LEA SI, DwArray 
    MOV CX, DX
    XOR BX, BX     
cycle:
    LODSW
;proverka na chetnost    
    TEST  AX, 01h
    JNZ   EndLoop
;-------------------
    CMP   BL, 0
    JNE   @1
    MOV   DX, AX
    MOV   BL, 1  
    JMP   EndLoop
;-------------------
@1:
    CMP   BH, 1
    JE    @2
    CMP   AX, DX
    JLE   @3
    MOV   BP, DX
    MOV   DX, AX
    MOV   BH, 1
    JMP   EndLoop
@3:
    MOV   BP, AX 
    MOV   BH, 1
    JMP   EndLoop
;-------------------
@2:
    CMP   AX, DX
    JL    @4
    MOV   BP, DX
    MOV   DX, AX
    JMP   EndLoop
@4:
    CMP   AX, BP
    JL    EndLoop
    MOV   BP, AX 
EndLoop:
    LOOP  cycle 
    MOV   FIND, BP
    CMP   BH, 0
    JE    ER   
    CMP   BP, DX
    JE    tormoz  
;================================================================
;==========================display a message on the screen=======
;================================================================
    LEA DX, msg1
    MOV AH, 9
    INT 21h          
;================================================================
;==========================Result output=========================
;================================================================    
    MOV  AX, BP
    TEST AX, AX
    JNS  oi1
    MOV  CX, AX
    MOV  AH, 02H
    MOV  DL, '-'
    INT  21H
    MOV  AX, CX
    NEG  AX
oi1:
    XOR CX, CX
    MOV BX, 10
oi2:
    XOR DX, DX
    DIV BX
    PUSH DX
    INC  CX
    TEST AX,AX
    JNZ  oi2
    MOV AH, 02H
oi3:
    POP DX
    CMP DL, 9
    JBE oi4
    ADD DL, 7
oi4:
    ADD DL, '0'
    INT 21H
    LOOP oi3       
    ;======================
    ;=wait for any key....=
    ;======================      
    lea dx, pkey
    mov ah, 9
    int 21h
    ;=====================   
    ;=====================  
    mov ah, 1
    int 21h 
    JMP InputRESTART
;================================================================
;==========================Tormoz================================
;================================================================         
tormoz:         
    lea dx, msg2
    mov ah, 9
    int 21h
    ;======================
    ;=wait for any key....=
    ;======================      
    lea dx, pkey
    mov ah, 9
    int 21h
    ;=====================   
    ;=====================  
    mov ah, 1
    int 21h  
    JMP InputRESTART   
Exit:    
    mov ax, 4c00h ; exit to operating system.
    int 21h    
ends
 
end start ; set entry point and stop the assembler.
Добавлено через 1 минуту
работает казалось бы на ура! но в ходе долгих проверок штук 20 я обнаружил ЧТО
при задаче такого массива 2, 2, -2, -2 считает что числа одинаковые и не выдаёт соответственно результата
0
6770 / 2739 / 384
Регистрация: 17.02.2013
Сообщений: 4,047
11.05.2015, 20:34 13
Цитата Сообщение от Ethereal Посмотреть сообщение
Если ИСКОМОЕ = НАИБОЛЬШЕЕ печатаем, что все четные одинаковы и юзер тормоз
Это я затупил. Если ИСКОМОЕ = НАИБОЛЬШЕЕ, то два наибольших целых одинаковы, а не все они. Убрать эту строчку из алгоритма.

Получается, что это я - тормоз.

Добавлено через 16 минут
Код
Флаг1 = ЛОЖЬ
Флаг2 = ЛОЖЬ
Флаг_РАЗЛИЧНЫ = ЛОЖЬ <- добавление
Цикл:
 ЧИСЛО = очередной_элемент_массива
 Если ЧИСЛО нечетно, то GOTO Конец_цикла
 Если Флаг 1 = ЛОЖЬ, то
       НАИБОЛЬШЕЕ = ЧИСЛО
       Флаг_1 = ПРАВДА
       GOTO Конец_цикла
 Если ЧИСЛО != НАИБОЛЬШЕЕ, то Флаг_РАЗЛИЧНЫ = ПРАВДА <- добавление
 Если Флаг 2 = ЛОЖЬ, то
       Если ЧИСЛО <= НАИБОЛЬШЕЕ
            ИСКОМОЕ = ЧИСЛО
       в противном случае
            ИСКОМОЕ = НАИБОЛЬШЕЕ
            НАИБОЛЬШЕЕ = ЧИСЛО
       Флаг_2 = ПРАВДА
       GOTO Конец_цикла
 Если ЧИСЛО > НАИБОЛЬШЕЕ
      ИСКОМОЕ = НАИБОЛЬШЕЕ
      НАИБОЛЬШЕЕ = ЧИСЛО
      GOTO Конец_цикла
 Если ЧИСЛО > ИСКОМОЕ
      ИСКОМОЕ = ЧИСЛО
Конец_цикла:
LOOP Цикл
Если Флаг_2 = ЛОЖЬ, то GOTO на ошибку
Если Флаг_РАЗЛИЧНЫ = ЛОЖЬ, то напечатать "Все четные одинаковы" <- добавление
Печатаем ИСКОМОЕ
Добавлено через 57 минут
Кстати, метафизический вопрос. Даны три числа : 2 2 -2.
Какое из них второе по величине ? По моему алгоритму 2.
Но ведь можно считать, что и -2. Тогда алго надо переделать.
1
83 / 19 / 5
Регистрация: 01.02.2015
Сообщений: 655
11.05.2015, 21:07  [ТС] 14
Цитата Сообщение от Ethereal Посмотреть сообщение
Какое из них второе по величине ? По моему алгоритму 2.
должно по идее быть -2
ксать тот алгоритм который я кидал рабочий в этом плане

Добавлено через 2 минуты
вот этот новый код который с
Цитата Сообщение от Ethereal Посмотреть сообщение
Флаг_РАЗЛИЧНЫ = ЛОЖЬ <- добавление
он работает в этом плане?
или всё же придётся алгоритм менять?
0
6770 / 2739 / 384
Регистрация: 17.02.2013
Сообщений: 4,047
11.05.2015, 21:40 15
Придется менять. Щас поменяю. Я написал математически корректный алгоритм. А ты хочешь построенный на бытовой логике. Впрочем, хозяин-барин.

Добавлено через 9 минут
А там можно только одну строчку вставить (отталкиваясь от того, что ты уже написал) и все будет чики-пики
Код
Флаг1 = ЛОЖЬ
Флаг2 = ЛОЖЬ
Цикл:
 ЧИСЛО = очередной_элемент_массива
 Если ЧИСЛО нечетно, то GOTO Конец_цикла
 Если Флаг 1 = ЛОЖЬ, то
       НАИБОЛЬШЕЕ = ЧИСЛО
       Флаг_1 = ПРАВДА
       GOTO Конец_цикла
 Если ЧИСЛО = НАИБОЛЬШЕЕ, то GOTO Конец_цикла <- вставить
 Если Флаг 2 = ЛОЖЬ, то
       Если ЧИСЛО <= НАИБОЛЬШЕЕ
            ИСКОМОЕ = ЧИСЛО
       в противном случае
            ИСКОМОЕ = НАИБОЛЬШЕЕ
            НАИБОЛЬШЕЕ = ЧИСЛО
       Флаг_2 = ПРАВДА
       GOTO Конец_цикла
 Если ЧИСЛО > НАИБОЛЬШЕЕ
      ИСКОМОЕ = НАИБОЛЬШЕЕ
      НАИБОЛЬШЕЕ = ЧИСЛО
      GOTO Конец_цикла
 Если ЧИСЛО > ИСКОМОЕ
      ИСКОМОЕ = ЧИСЛО
Конец_цикла:
LOOP Цикл
Если Флаг_2 = ЛОЖЬ, то GOTO на ошибку
Печатаем ИСКОМОЕ
Добавлено через 7 минут
Тут ошибка будет означать, что нету минимум двух разных четных.

Добавлено через 9 минут
Т.е. тут я только одну строчку вставил, помеченную "<- вставить" и после цикла условие ухода на ошибку оставил единственное. Более ничего не трогал.

Добавлено через 4 минуты
Вот эта строчка, которую я вставил, будет гарантировать, что ИСКОМОЕ не будет равно НАИБОЛЬШЕМУ. Числа уже равные текущему НАИБОЛЬШЕМУ будут отбрасываться, а значит текущее ИСКОМОЕ будет наибольшим из всех меньших его по величине чисел.
1
83 / 19 / 5
Регистрация: 01.02.2015
Сообщений: 655
11.05.2015, 22:14  [ТС] 16
всё работает на ура (тестил раз 30)
вот код (а можно было бы его ещё как то усовершенствовать в плане быстродействия
наверное это уже глупости но чисто ради "спортивного интереса"
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
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
; multi-segment executable file template.
 
data segment
req        db  10,13,'ENTER ARRAY:$'
error      db  10,13,"INPUT ERROR$"
pkey       db  10,13,"press any key...$"
msg1       db  10,13,"THE SECOND LARGEST EVEN NUMBER:$"  
msg2       db  10,13,"ALL EVEN IDENTICAL, RETYPE$"
inpbuf     db  50 
len        db  0 
DBbuF      db  50 dup (?)
dwArray    dw  100 dup (?)
dimension  dw  0   
FIND dw 0
ends
 
stack segment
    dw   128  dup(0)
ends
 
code segment
start:
; set segment registers:
    MOV AX, DATA
    MOV DS, AX
    MOV ES, AX 
;================================================================
;==========================input array===========================
;================================================================
InputRESTART:
    XOR CX, CX
    XOR BX, BX
    XOR BP, BP
    XOR AX, AX 
InputStart:    
    mov  ah, 09h
    lea  dx, req
    int  21h
    
    mov ah, 0Ah
    lea dx, inpbuf      
    int 21h
    
    CMP len, 0
    JE  er
    LEA SI, DBbuF
    LEA DI, dwArray
    
    MOV BX, 10              ;notation
    XOR DX, DX
nachalo:
    PUSH DX    
    cmp byte ptr [si],"-" 
    jnz positive
    mov BP,1  
    inc si
positive:
    xor ax,ax
Inputcycle:    
    mov CL,[SI]
    CMP CL,0dh   ;ne konec li stroki         
    JZ  proverka
    CMP CL,20h
    JZ  proverka ; konec chisla (probel)
    
    SUB CL,'0'
    JL er
    CMP CL,9
    JA er
    MUL BX
    ADD AX, CX
    INC SI
    JMP Inputcycle
    
proverka:
    POP DX
    INC DX
    CMP BP,1
    JNZ neminys
    NEG AX
neminys:
    XOR BP, BP
    MOV [DI], AX
    ADD DI, 2
    INC SI
    CMP CL, 0dh
    JZ  endin    
    JMP nachalo    
er:
    MOV DX, offset error
    MOV AH, 09
    INT 21h
    ;======================
    ;=wait for any key....=
    ;======================      
    lea dx, pkey
    mov ah, 9
    int 21h
    ;=====================   
    ;=====================  
    mov ah, 1
    int 21h
    ;======================
    ;=====clear screen=====
    ;======================   
    MOV  AH, 00H
    MOV  AL, 03H  
    INT    10H  
    JMP InputRESTART 
           
endin:
    MOV dimension, DX   
;================================================================
;==========================main part=============================
;================================================================             
    LEA SI, DwArray 
    MOV CX, DX
    XOR BX, BX     
cycle:
    LODSW
;proverka na chetnost    
    TEST  AX, 01h
    JNZ   EndLoop
;-------------------
    CMP   BL, 0
    JNE   @1
    MOV   DX, AX
    MOV   BL, 1  
    JMP   EndLoop
;-------------------
@1: 
    CMP   AX, DX
    JE    EndLoop
    CMP   BH, 1
    JE    @2
    CMP   AX, DX
    JLE   @3
    MOV   BP, DX
    MOV   DX, AX
    MOV   BH, 1
    JMP   EndLoop
@3:
    MOV   BP, AX 
    MOV   BH, 1
    JMP   EndLoop
;-------------------
@2:
    CMP   AX, DX
    JL    @4
    MOV   BP, DX
    MOV   DX, AX
    JMP   EndLoop
@4:
    CMP   AX, BP
    JL    EndLoop
    MOV   BP, AX 
EndLoop:
    LOOP  cycle 
    MOV   FIND, BP
    CMP   BH, 0
    JE    tormoz   
    CMP   BP, DX
    JE    tormoz  
;================================================================
;==========================display a message on the screen=======
;================================================================
    LEA DX, msg1
    MOV AH, 9
    INT 21h          
;================================================================
;==========================Result output=========================
;================================================================    
    MOV  AX, BP
    TEST AX, AX
    JNS  oi1
    MOV  CX, AX
    MOV  AH, 02H
    MOV  DL, '-'
    INT  21H
    MOV  AX, CX
    NEG  AX
oi1:
    XOR CX, CX
    MOV BX, 10
oi2:
    XOR DX, DX
    DIV BX
    PUSH DX
    INC  CX
    TEST AX,AX
    JNZ  oi2
    MOV AH, 02H
oi3:
    POP DX
    CMP DL, 9
    JBE oi4
    ADD DL, 7
oi4:
    ADD DL, '0'
    INT 21H
    LOOP oi3       
    ;======================
    ;=wait for any key....=
    ;======================      
    lea dx, pkey
    mov ah, 9
    int 21h
    ;=====================   
    ;=====================  
    mov ah, 1
    int 21h 
    JMP InputRESTART
;================================================================
;==========================Tormoz================================
;================================================================         
tormoz:         
    lea dx, msg2
    mov ah, 9
    int 21h
    ;======================
    ;=wait for any key....=
    ;======================      
    lea dx, pkey
    mov ah, 9
    int 21h
    ;=====================   
    ;=====================  
    mov ah, 1
    int 21h  
    JMP InputRESTART   
Exit:    
    mov ax, 4c00h ; exit to operating system.
    int 21h    
ends
 
end start ; set entry point and stop the assembler.
0
11.05.2015, 22:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.05.2015, 22:14
Помогаю со студенческими работами здесь

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

Найти в массиве второе по величине число
Помогите пожалуйста в решении этих двух задач на С++ 2) Составить программу, которая в массиве A...

Функция: в массиве найти второе по величине число
Решить с помощью функции. Составить программу, которая в массиве A находит второе по величине...

Составить программу, которая в массиве A[n] находит второе по величине число
Составить программу, которая в массиве A находит второе по величине число (вывести на печать число,...


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

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