Поменять местами элементы на главных и побочных диагоналях матрицы - Assembler
Формулировка задачи:
Доброго времени суток.
Задание такое: Нужно поменять местами элементы на главных и побочных диагоналях матрицы. Размер матрицы не важен.Буду благодарен за помощь.
Решение задачи: «Поменять местами элементы на главных и побочных диагоналях матрицы»
textual
Листинг программы
format PE GUI 4.0 include 'win32a.inc' xor eax,eax xor ecx,ecx mov al,[size] mul [size] ;вычисляем размер матрицы mov cx,ax add eax,matrix fill: dec eax mov [eax],cl ;заполняем массив значениями loop fill mov ebx,matrix ;указатель на элемент основной диагонали mov edx,ebx ;указатель на элемент побочной диагонали mov cl,[size] ;счётчик оставшихся операций обмена push edi ;сохраняем esi и edi в стек, чтоб не потерять push esi mov edi,ecx mov esi,edi inc edi ;слагаемое для перебора элементов основной диагонали dec esi ;слагаемое для перебора элементов побочной диагонали add edx,esi loloop: mov al,[ebx] ;обмен xchg [edx],al mov [ebx],al add ebx,edi ;к следующей паре значений add edx,esi loop loloop pop esi ;восстанавливаем esi, edi. Вдруг пригодятся pop edi invoke ExitProcess,0 size db 4 ;пусть ширина матрицы будет в пределах 16. А значения <256. matrix db ? data import library kernel32, 'KERNEL32.DLL',user32, 'USER32.DLL' import kernel32,ExitProcess, 'ExitProcess' end data
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д