У вещественной матрицы А размерности nxn найти произведение элементов, принадлежащих отрезку [1, 10] - Assembler

Узнай цену своей работы

Формулировка задачи:

У вещественной матрицы А размерности nxn найти произведение элементов, принадлежащих отрезку [1, 10]. Организовать ввод-вывод элементов матрицы. На экран выводить исходную матрицу и значение произведения. Ввод-вывод сделал, а вот с произведением траблы. P.S. help

Решение задачи: «У вещественной матрицы А размерности nxn найти произведение элементов, принадлежащих отрезку [1, 10]»

textual
Листинг программы
;------------------------ 
extrn vvod:near,disp:near 
Dseg segment para public 'data' 
 mas db 10 dup (?) 
 sum db 5 dup(0) 
 mes1 db 'n=$' 
 mes2 db 'm=$' 
 mes3 db 'mas[$' 
 mes4 db ',$' 
 mes5 db ']=$' 
 mes6 db 'Исходный массив$' 
 mes7 db 10,13,'$' 
 mes9 db ' $' 
 mes10 db 'Полученный вектор$' 
 n dw ? 
 m dw ? 
Dseg ends 
;------------------------------ 
Sseg segment para stack 'stack' 
 db 30 dup(0) 
Sseg ends 
;----------------------------- 
Cseg segment para public 'code' 
osn proc near 
 assume cs:cseg,ds:dseg,ss:sseg 
 mov ax,dseg 
 mov ds,ax 
;---------------------------- 
;---------------------------- 
; ввод элементов массива
; ввод n 
 
 lea dx,mes1 
 mov ax,0900h 
 int 21h 
 call vvod 
 mov n,bx 
; ввод m 
 
 lea dx,mes2 
 mov ax,0900h 
 int 21h 
 call vvod 
 mov m,bx 
; ввод самих элементов
 
 mov cx,n ;число для внешнего цикла по строкам
 mov si,0 ;строки в матрице
 mov bx,offset mas ;строки в матрице (смещение
 ; адреса переменной внутри сегмента) 
zikl_i: 
 push cx ;сохраняем содержимое р-ра cx в стеке
 mov cx,m ;число для внутреннего цикла ; (по столбцам) 
 mov di,0 ;столбцы в матрице
zikl_j: 
 lea dx,mes3 ;mas[ 
 mov ax,0900h 
 int 21h 
 mov ax,si 
 call disp 
; вывод значения на экран
 
; mov ah,02h ;ф-я вывода значения из dx на экран
; mov dx,si 
; add dx,0030h ;преобразование числа в символ
; int 21h 
 lea dx,mes4 ; , 
 mov ax,0900h 
 int 21h 
 mov ax,di 
 call disp 
 lea dx,mes5 ;]= 
 mov ax,0900h 
 int 21h 
 push bx 
 call vvod 
 mov dl,bl 
 pop bx 
 mov mas[bx][di],dl ;первый способ обращения к элементам двумерного массива
 inc di 
 loop zikl_j 
 pop cx 
 add bx,m ;увеличиваем на кол-во эл-тов в строке
 inc si 
 loop zikl_i 
;---------------------------- 
; вывод элементов массива
 
 lea dx,mes6 ;Исходная матрица
 mov ax,0900h 
 int 21h 
 lea dx,mes7 ;перевод курсора на начало строки
 mov ax,0900h 
 int 21h 
 mov cx,n ;число для внешнего цикла по строкам
 mov si,0 ;строки в матрице
 mov bx,offset mas ;строки в матрице (смещение адреса переменной внутри 
 
сегмента) 
zikl_i1: 
 push cx ;сохраняем содержимое р-ра cx в стеке
 mov cx,m ;число для внутреннего цикла (по столбцам) 
 mov di,0 ;столбцы в матрице
zikl_j1: 
 mov al,[bx][di] ;второй способ обращения к эл-там двумерного массива
 cbw 
 call disp 
 lea dx,mes9 ;пробел
 mov ax,0900h 
 int 21h 
 inc di 
 loop zikl_j1 
 pop cx 
 add bx,m ;увеличиваем на кол-во эл-тов в строке
 inc si 
 lea dx,mes7 ;перевод курсора на начало новой строки
 mov ax,0900h 
 int 21h 
 loop zikl_i1 ;----------------------------
 
mov EBX,0
mov al,n
cbw
imul n
sub al,1
mov ECX,al
 
cycl:
  cmp al,a
 
; завершение программы
 mov ax,4c00h 
 int 21h 
osn endp 
Cseg ends 
end osn

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.222 из 5
Похожие ответы