G
Guest
Задача: дан двумерный массив, переставить максимальный и минимальный элемент в каждом Столбце. Задачка вроде элементарная, и не могу сказать что я дебил, однако уже 5й день бьюсь и все никак. Ввод - вывод работает нормально, проверял.Найдите ошибку пожалуйста, мне нужен свежий взгляд на происходящее)
Добавлено:
это то чем я пользовался при компиляции
Код:
Include macro.lib
Data Segment
Mas dw 50 dup (50 dup (?))
N dw ?
M dw ?
I dw ?
J dw ?
Nmx dw ?
Nmn dw ?
Max dw ?
Min dw ?
pr db " $";
mesl db "‚ўҐ¤ЁвҐ н«Ґ¬Ґвл ¬ ббЁў $"; Просто "Ввод чисел"
inn db "‚ўҐ¤ЁвҐ Ї«§ Є®«ў® бва®Є $"; это в кодировке DOS - введите колво строк
inm db "‚ўҐ¤ЁвҐ Ї«§ Є®«ў® бв®«Ўж®ў $"; введите колво столбцов
Data Ends
Sst Segment Stack
db 128 dup (?)
Sst Ends
Code Segment
Assume DS : Data,CS:Code,SS:Sst;
func_out Proc
mov CX,N ; з «® жЁЄ« ўлў®¤
mov BX,0
str11:
push CX
mov CX,M
mov DI,0
str22:
mov AX, Mas[BX][DI]
print_number
message pr
add DI,2
loop M333
jmp M44
M333: jmp str22
M44:
crlf
pop CX
add BX,M
add BX,M
loop M55
jmp obhod1
M55: jmp str11
obhod1:
crlf
ret
func_out EndP
Begin:
mov DX,Data
mov DS,DX
cls
crlf
message inn
crlf
key_$2bin
mov N,AX; строки
crlf
message inm
crlf
key_$2bin
mov M,AX; столбцы
crlf
message mesl
crlf
;------------------------
;ввод - вывод
mov CX,N
mov BX,0
str1:
push CX
mov CX,M
mov DI,0
str2:
key_$2bin
crlf
mov Mas[BX][DI],AX
; message pr
add DI,2
loop M33
jmp M4
M33: jmp str2
M4:
crlf
pop CX
add BX,M
add BX,M
loop M5
jmp obhod
M5: jmp str1
obhod: ;Ї®б«Ґ жЁЄ«
crlf
cls
crlf
call func_out
;---------------------------
; Начало цикла перестановки
mov CX,M
mov BX,0
CJ:; внешний цикл - по столбцам
push CX
mov CX,N
mov DI,0
mov AX, Mas [0][0]
mov Max,AX
mov Min,AX
mov Nmx,0
mov Nmn,0
CI:; Внутренний цикл - по строкам
mov AX, Mas [DI][BX]
CMP AX,Max; сравниваем с максимумом
JG M1
jmp M2
M1:
mov AX,Mas [DI][BX]
mov Max, AX
mov Nmx, DI
jmp ex
M2:
mov AX,Mas [DI][BX]
CMP AX,Min; сравниваем с минимумом
JL M3
jmp ex
M3:
mov AX,Mas [DI][BX]
mov Min, AX
mov Nmn,DI
ex:
add DI,2; инкрементируем счетчик на 2 тк word
loop CI
; Обмен местами
mov SI,Nmx
mov DX,Mas [SI][BX]
mov SI,Nmn
XCHG DX,Mas [SI][BX]
mov SI,Nmx
mov Mas [SI][BX],DX
add BX,2
pop CX
loop CJ
key_$2bin
cls
crlf
crlf
call func_out
key_$2bin
mov AX,4c00h
int 21h
Code ends
end Begin
Добавлено:
Ссылка скрыта от гостей
это то чем я пользовался при компиляции