Читающий эти строки добрый человек, помоги советом - кто может мне решить маленькое задание по Ассемблеру. Я студент 1-ого курса. ПОГИБАю ??? :-[ :'(
dark0ut
25.02.2003 13:32
а что тебе конкретно надо?
borr1
25.02.2003 17:00
Составить блок-схему алгоритма и программу на алгоритмическом языке Ассемблер, осуществить ввод исходного текста в ПЭВМ, выполнить отладку и получить результаты работы.
Отчет для каждого задания должен содержать:
• блок-схему алгоритма программы; • листинг программы с комментариями; • результаты работы программы.
ЗАДАНИЕ
• Представить алгоритм и программу умножения матриц A=(A(I,J), I=1,N, J=1,L) и B=(B(I,L), I=1,L, J=1,M). Элементы результирующей матрицы C(I,J)=A(I,K)*B(K,J), K=1,L для (I=1,N (J=1,M)). • В матрице найти минимальный элемент заданной строки и умножить на это число элементы того столбца, в котором расположен максимальный элемент указанной строки. ;)
___ALex___
25.02.2003 19:00
;(********************************************************************
*********************)
;(* *)
;(* Программа ищет максимальное и минимальное значения в матрице 20x20 *)
;(* (элемент матрицы - беззнаковое целое число размером в байт) *)
;(* Значение максимального элемента записывается в переменную max, а минимального в min *)
;(* *)
;(******************************************************************************
***********)
;в данном примере максимальным элементом будет 255, а минимальным будет 1
masm;используем синтаксис Макроассемблера
modelsmall;модель памяти small (код занимает один сегмент кода, данные объединены
;в одну группу DGROUP)
.data;сегмент данных
max db?;байтовая переменная под максимальный элемент матрицы
min db?;байтовая переменная под минимальный элемент матрицы
;матрица размером 20x20 (статически её инициализируем)
matrix db 3,4,8,9,4,25,9,7,5,251,2,12,14,34,15,16,17,56,76,78
db 3,4,8,9,4,25,9,7,5,251,2,12,14,34,15,16,17,56,76,78
db 3,4,8,9,4,25,9,7,5,251,2,12,14,34,15,16,17,56,76,78
db 3,4,8,9,4,25,9,7,5,251,2,12,14,34,15,16,17,56,76,78
db 3,4,8,9,4,25,9,7,5,251,2,12,14,34,15,16,17,56,76,78
db 3,4,8,9,4,25,9,7,5,251,2,12,14,34,15,16,17,56,76,78
db 3,4,8,9,4,25,9,7,5,251,2,12,14,34,15,16,17,56,76,78
db 3,4,8,9,4,25,9,7,5,251,2,12,14,34,15,16,17,56,76,78
db 3,4,8,9,4,25,9,7,5,251,2,12,14,34,15,16,17,56,76,78
db 3,4,8,9,4,25,9,7,5,251,2,12,14,34,15,16,17,56,76,78
db 3,4,8,9,4,25,9,7,5,251,2,12,14,34,15,16,17,56,76,78
db 3,4,8,9,4,25,9,7,5,251,2,12,14,34,15,16,17,56,76,78
db 3,4,8,9,4,25,9,7,5,251,2,12,14,34,15,16,17,56,76,78
db 3,4,8,9,4,25,9,7,5,251,2,12,14,34,15,16,17,56,76,78
db 3,4,8,9,4,25,9,7,5,251,2,12,14,34,15,16,17,56,76,78
db 3,4,8,9,4,25,9,7,5,251,2,12,14,34,15,16,17,56,76,78
db 3,4,8,9,4,25,9,7,5,251,2,12,14,34,15,16,17,56,76,78
db 3,4,8,9,4,25,9,7,5,251,2,12,14,34,15,16,17,56,76,78
db 3,4,8,9,4,25,9,7,5,251,2,12,14,34,15,16,17,56,76,78
db 3,4,8,9,4,25,9,7,5,255,2,12,14,34,15,16,17,56,76, 1 ;байтовая матрица 20x20
.code;сегмент кода
begin: ;точка входа в программу
mov ax,@data;адрес сегмента данных в регистр ax
mov ds,ax;ax в ds
mov bx,0 ;bx - строки матрицы
mov si,0 ;si - столбцы матрицы
mov dl,matrix[bx][si] ;первый элемент матрицы в dl
mov max,dl;dl в max
mov min,dl;dl в min
mov di,0 ;обнуляем счётчик строк
mov cx,20 ;число для внешнего цикла (по строкам)
extcycle: ;внешний цикл по строкам
push cx;сохраняем в стеке счётчик внешнего цикла
mov cx,20 ;число для внутренего цикла (по столбцам)
mov si,0 ;обнуляем регистр перед началом перебора значений в строке матрицы
intcycle: ;внутренний цикл по столбцам
mov dl,matrix[bx][si] ;очередной элемент матрицы в dl
cmp min,dl;сравниваем значения в min со значением в dl
jbe next2 ;если значение в min <= очередного элемента матрицы, то идём на метку next2
mov min,dl;иначе записываем в min значение из dl
next2: ;метка "продолжения"2
cmp max, dl;сравниваем значения в max со значением в dl
jae next1 ;если значение в max >= очередного элемента матрицы, то идём на метку next1
mov max,dl;иначе записываем в max значение из dl
next1: ;метка "продолжения"1
inc si;передвижение на следующий элемент в строке
loop intcycle ;цикл по метке intcycle
inc di;инкремент di
mov ax,di;di в ax
mov si,20 ;20 в si
mul si;ax умножаем на si, младшая часть результата в ax, а старшая в dx
mov bx,ax;ax в bx (поскольку элемент массива - байт и 19 * 20 < FFFFh),
;то есть результат умножения не выйдет за пределы регистра ax
;(при данной размерности матрицы и её элементов)
pop cx;восстанавливаем внешний счётчик цикла из стека
loop extcycle ;цикл по метке extcycle
mov ax,4c00h ;отдаём управление ОС
int 21h ;вызывая прерывание Dos(21h)
end begin ;конец программы
писал другану когда-то это конечно не твоя задачо но что есть... может натолкнёт на какие мысли... а писать щас у меня время нет
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.