Автор Тема: Ввести 2 4х4 матрицы. во 2-ой м. в каждой строке найти мах и прибавить к 1-ой м.  (Прочитано 1790 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн pooleet

  • Коллежский регистратор
  • *
  • Сообщений: 2
  • Репутация: 0
Трудноть заключается в том,что тип данных в матрице байт а цифры введенные в матрицу должны быть от 00-99...у меня вводятся только однозначные числа без пробелов между ними. как исправить код что бы вводились двоичные цифры, а в конечной матрице (3-ей) выводились и 3-х значные цифры?
компилятор tasm

Цитировать
model small
include io.asm
.stack 100h
.data
mas1 db 4 dup( 4 dup(0))
mas2 db 4 dup( 4 dup(0))
max db 0
subj1 db 'BBEDUTE 1 MACCUB 4isla ot 0-9',13,10,' $'
subj2 db 10,13,'BBEDUTE 2 MACCUB 4isla ot 0-9 ',13,10,' $'
subj3 db 10,13,'MACCUB 3',13,10,' $'
ps db 13,10,' $' ;перевод на новую строку
.code

main:
mov ax, @data
mov ds, ax

;заполнение 1 массива
mov ah, 09h
lea dx, subj1
int 21h ;вывод информационной строки
xor si, si
mov si,1
mov cx, 4
incykl1:
push cx
mov cx, 4
outcykl1:
mov ah, 01h
int 21h ;ввод элементов 1 массива
sub al, 30h
mov mas1[si], al ;размещение элементов на месте
inc si
loop outcykl1
pop cx
mov ah, 09h
lea dx, ps ;переводим на следующую строку
int 21h
loop incykl1

;заполнение 2 массива
mov ah, 09h
lea dx, subj2
int 21h ;вывод информационной строки
xor si, si
mov si,1
mov cx, 4
incykl2:
push cx
mov cx, 4
mov ah, 01h
outcykl2:
int 21h ;ввод элементов 2 массива
sub al, 30h
mov mas2[si], al ;размещение элементов на месте
inc si
loop outcykl2
pop cx
mov ah, 09h
lea dx, ps
int 21h
loop incykl2

;поиск максимального в строках
xor dx,dx
xor si,si
mov si,1
mov cx, 4
s1t: push cx
mov cx, 3
mov dl, mas2[si]
maxi: inc si
cmp dl, mas2[si]
ja min1 ;если dl больше, то переходим
mov dl, mas2[si]
min1: loop maxi
mov max, dl ;сохранение максимального числа
inc si
push si
xor dx, dx
xor cx, cx
mov cx, 4
sub si, 4
sum: ;прибавляем максимальное число ко всем числам данной строки
mov al, mas1[si]
add al, max
mov mas1[si], al
inc si
loop sum
pop si
pop cx
loop s1t
;вывод на экран 3 массива
mov ah, 09h
lea dx, subj3
int 21h ;вывод информационной строки
xor si, si
mov si,1
mov cx, 4
incykl3:
push cx
mov cx, 4
outcykl3:
mov dl, mas1[si]
add dl, 30h
mov ah, 02h
int 21h ;вывод элементов итогового массива
inc si
loop outcykl3
pop cx
mov ah, 09h
lea dx, ps
int 21h
loop incykl3

mov ax, 04c00h
int 21h
end main
« Последнее редактирование: ёоЭм 18, 2009, 02:18:36 pm от pooleet »

Оффлайн pooleet

  • Коллежский регистратор
  • *
  • Сообщений: 2
  • Репутация: 0
как ввести в массив данные - слово, я поняла и нашла максимальное в каждой строке (max). Кто нибудь может помочь сложить 2-два массива mas1 и max.

Цитировать
model small
include io.asm

.stack 100h
.data


mas1 db 4 dup( 4 dup(?))
mas2 db 4 dup( 4 dup(?))
max db 4 dup(?)
subj1 db 10,13, "Vvedite elementi <00-99>","$"
priglashenie db 10,13, "Ishodnay matrica:","$"
subj3 db 10,13,'MATRICA 3',13,10,' $'
nl db 10,13,'$' ;перевод на новую строку
.code


main:
mov ax, @data
mov ds, ax

;заполнение 1 массива

; Vvod elementov **********************
lea dx,subj1
mov ah, 9h
int 21h

lea dx,nl ; novay stroka
mov ah,9h
int 21h

mov si,0
mov cx,16

M:
inint ax
mov mas1[si], al
inc si
loop M


lea dx, priglashenie
          mov ah,9
          int 21h

         mov cx, 4
         mov bx, 0

      next_line1:
          mov si, 0
          push cx
          mov cx,4


          lea dx,nl           
          mov ah,9
          int 21h


        ctroka1:
         
          mov al,mas2[bx][si]
          xor ah,ah
          outword ax             

       
          mov ah,2           
          mov dl,9h           
          int 21h

          inc si             
         loop ctroka2
                             
          pop cx
          add bx,4

    loop next_line1
lea dx,nl ; novay stroka
mov ah,9h
int 21h


mov bx,4
mov cx,4 ; kol-vo povtorenii vnesnego cikla
mov al, mas1[4][0]
;mov min, al

;заполнение 2 массива
; Vvod elementov **********************
lea dx,subj1
mov ah, 9h
int 21h

lea dx,nl ; novay stroka
mov ah,9h
int 21h

mov si,0
mov cx, 16

L:
inint ax
mov mas2[si], al
inc si
loop L

; Ishodnay matrica2********************

 lea dx, priglashenie
          mov ah,9
          int 21h

         mov cx, 4
         mov bx, 0

      next_line2:
          mov si, 0
          push cx
          mov cx,4


          lea dx,nl           
          mov ah,9
          int 21h


        ctroka2:
         
          mov al,mas2[bx][si]
          xor ah,ah
          outword ax             

       
          mov ah,2           
          mov dl,9h           
          int 21h

          inc si             
         loop ctroka2
                             
          pop cx
          add bx,4

    loop next_line2
lea dx,nl ; novay stroka
mov ah,9h
int 21h
   ;////////////////////////
mov di,0; переносим в начальное значение
mov bx,0; обнуляем
mov cx,4 ; kol-vo povtorenii vnesnego cikla
next_line:
push cx
  mov al, mas2[bx][0]

;поиск максимального в строках
  xor si,si
  mov cx, 4
 
nexT_eL:
  cmp  mas2[bx][si],al
  jna min1 ;
  mov al, mas2[bx][si]
  inc si
min1: loop  nexT_eL
  mov max[di], al
  inc di

  pop cx
  add bx, 4
  loop next_line
  ;++++++++++++++++++++

;сложение

???????????????????

         mov cx, 4
         mov bx, 0

      next:
          mov si, 0
          push cx
          mov cx,4


          lea dx,nl           
          mov ah,9
          int 21h


        ctroka3:
         
          mov al,bl
          xor ah,ah
          outword ax             

       
          mov ah,2           
          mov dl,9h           
          int 21h

          inc si             
         loop ctroka3
                               
          pop cx
          add bx,4