;заполним матрицу псевдослучайными числами 0-99
lea di, matrix ;адрес
mov cx, N*N ;количество
formMatrixLoop:
call rand ;получаем число
stosw ;пишем в матрицу
loop formMatrixLoop ;по всем элементам матрицы
;запишем главную диагональ в обратном порядке
xor si, si ;смещение элемента левого верхнего угла матрицы (самого первого)
mov di, 2*(N*N-1) ;смещение элемента правого нижнего угла матрицы (самого последнего)
ChangeLoop: ;по элементам главной диагонали
cmp si, di ;меняем, пока первый индекс меньше второго
jae ChangeEnd ;все сделано - на выход
mov ax, matrix[si] ;меняем местами matrix[si] и matrix[di]
xchg ax, matrix[di]
xchg ax, matrix[si]
add si, 2*(N+1) ;смещаем на следующий диагональный
sub di, 2*(N+1) ;смещаем на предыдущий диагональный
jmp ChangeLoop ;на следующий обмен
ChangeEnd:
.model small
N equ 5 ;размерность матрицы
.data
matrix dw 00h,01h,02h,03h,04h ;матрица 5*5 слов
dw 10h,11h,12h,13h,14h
dw 20h,21h,22h,23h,24h
dw 30h,31h,32h,33h,34h
dw 40h,41h,42h,43h,44h
.code
start:
mov ax, @data
mov ds, ax
;запишем главную диагональ в обратном порядке
xor si, si ;смещение элемента левого верхнего угла матрицы (самого первого)
mov di, 2*(N*N-1) ;смещение элемента правого нижнего угла матрицы (самого последнего)
ChangeLoop: ;по элементам главной диагонали
cmp si, di ;меняем, пока первый индекс меньше второго
jae ChangeEnd ;все сделано - на выход
mov ax, matrix[si] ;меняем местами matrix[si] и matrix[di]
xchg ax, matrix[di]
xchg ax, matrix[si]
add si, 2*(N+1) ;смещаем на следующий диагональный
sub di, 2*(N+1) ;смещаем на предыдущий диагональный
jmp ChangeLoop ;на проверку
ChangeEnd:
mov ax, 4c00h
int 21h
end start
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.