Хостинг портала RFpro.ru: Московский хостер Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64 РАССЫЛКИ ПОРТАЛА RFPRO.RU Лучшие эксперты по данной тематике Номер выпуска: | 1510 | Дата выхода: | 10.04.2012, 16:30 | Администратор рассылки: | Лысков Игорь Витальевич (Старший модератор) | Подписчиков / экспертов: | 99 / 40 | Вопросов / ответов: | 1 / 1 | Консультация # 185769: Здравствуйте, уважаемые эксперты! Прошу вас написать программу вот с таким заданием: Дана матрица размером m x m. Записать главную диагональ (любую из двух) в обратном порядке. Желательно к каждой строке прописать комментарии. И сделайте пожалуйста без использования процедур и макросов. п.с. Ассемблер : TASM Размер пе... Консультация # 185769: Здравствуйте, уважаемые эксперты! Прошу вас написать программу вот с таким заданием:
Дана матрица размером m x m. Записать главную диагональ (любую из двух) в обратном порядке.
Желательно к каждой строке прописать комментарии. И сделайте пожалуйста без использования процедур и макросов.
п.с. Ассемблер : TASM Размер переменных: Слово Числа в матрице рандомные Размер матрицы не будет больше 5x5
Заранее спасибо. Дата отправки: 07.04.2012, 16:01 Вопрос задал: Yankov Dmitry (Посетитель) Всего ответов: 1 Страница онлайн-консультации » Консультирует Лысков Игорь Витальевич (Старший модератор): Здравствуйте, Yankov Dmitry! Предлагаю такую программу. Для заполнения матрицы использовал несложный генератор псевдослучайных чисел. Для его инициализации - системное время. Если что непонятно, спрашивайте.
Код : .model small N equ 5 ;размерность матрицы .data seed dw ? ;очередное псевдослучайное число matrix dw 5*5 dup (?) ;матрица 5*5 слов .code start: mov ax, @data mov ds, ax mov es, ax call randInit ;инициируем последовательность псевдослучайных чисел ;заполним матрицу псевдослучайными числами 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: mov ax, 4c00h int 21h ;инициализация последовательности псевдослучайных чисел randInit proc mov ah, 2ch ;запрашиваем текущее время int 21h ;получим: ch - секунды, cl - сотые секунды, dh - часы, dl - минуты xor cx, dx ;сделаем более "случайным" xchg ch, cl ;и чтобы младший байт шел первым mov seed, cx ;сохраним ret randInit endp ;получение очередного псевдослучайного числа в диапозоне 0-99 rand proc near mov ax, seed ;предыдущее случайное число mov dx, 8E45h ;возьмем вот такое число mul dx ;и умножим на него inc ax ;чтобы исключить "зацикливание" на нуле mov seed, ax ;сохраним xor dx, dx ;получим число в диапозоне 0-99 mov bx, 100 ;для этого разделим на 100 div bx mov ax, dx ;и возьмем остаток от деления ret rand endp end start  | Консультировал: Лысков Игорь Витальевич (Старший модератор) Дата отправки: 09.04.2012, 16:43 5 нет комментария ----- Дата оценки: 09.04.2012, 17:47 | Рейтинг ответа: 0 |
Оценить выпуск | Задать вопрос экспертам главная страница | стать участником | получить консультацию техническая поддержка | восстановить логин/пароль Дорогой читатель! Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно! МЫ РАБОТАЕМ ДЛЯ ВАС! |
Комментариев нет:
Отправить комментарий