Работа с матрицами - Assembler (224720)
Формулировка задачи:
Задать с клавиатуры матрицу размером 4 на 4. Найти сумму элементов каждой строки строки матрицы и записать в вектор. Предусмотреть: 1.приглашение к заданию матрицы. 2.вывод сформированого вектора на экран. 3.проверку разрядности элементов матрицы. Разрядность не больше 2
как написать чтобы он построчно складывал элементы и выводил в вектор?
Include io.asm Sseg SEGMENT STACK DB 1000 DUP(?) ;ОБЛАСТЬ СТЕКА Sseg ENDS Dseg SEGMENT a dw 4 dup (4 DUP(?)) max dw (?) buf db 3, (?),3 dup (?) STR1 db 0dh,0ah,'Zapishite matricu 4x4:$' STR2 db 0dh,0ah,'Poluchivshisya vektor:$' Dseg ENDS Cseg SEGMENT ASSUME CS:Cseg,DS:Dseg,SS:Sseg Start: MOV AX,Dseg ;ИНИЦИАЛИЗАЦЫЯ СЕГМЕНТА ДАННЫХ MOV DS,AX lea dx,STR1 outstr newline MOV AX,0 MOV DI,0 MOV SI,0 MOV BX,0 MOV CX,4 m1:inint a[BX][SI] ADD SI,2 loop m1 MOV SI,0 ADD BX,8 MOV CX,4 m2:inint a[BX][SI] ADD SI,2 loop m2 MOV SI,0 ADD BX,8 MOV CX,4 m3:inint a[BX][SI] ADD SI,2 loop m3 MOV SI,0 ADD BX,8 MOV CX,4 m4:inint a[BX][SI] ADD SI,2 loop m4 MOV AH,1 ;не даём окну закрыться сразу после вывода INT 21H MOV AX,400H ;ПЕРЕДАЧА УПРАВЛЕНИЕ ОС INT 21H Cseg ENDS END Start
Решение задачи: «Работа с матрицами»
textual
Листинг программы
Sseg SEGMENT STACK DB 1000 DUP(?) Sseg ENDS Dseg SEGMENT a dw 4*4 dup (?) b dw 4 dup (0) c dw,0 d dw 0 e dw 0 buf db 3, 24 dup(?) mn dw 10 STR1 db 0dh,0ah,'Zapishite matricu 4x4:$' STR2 db 0dh,0ah,'Poluchivshisya vektor:',13,10,'$' Dseg ENDS Cseg SEGMENT ASSUME CS:Cseg,DS:Dseg,SS:Sseg Start: MOV AX,Dseg MOV DS,AX lea dx,STR1 mov ax,3 int 10h mov ah,9 int 21h mov cx,4 mov dH,1 l1: inc dh mov dl,0 push cx mov cx,4 l2: mov ah,2 mov bh,0 int 10h add dl,6 push dx lea dx,buf mov ah,0ah int 21h push cx mov ch,0 mov cl,buf[1] push bx mov bx,2 mov c,0 l3: mov ah,0 mov al,buf[bx] sub al,30h push cx dec cx l4: jcxz l5 mul mn loop l4 l5: pop cx inc bx add c,ax loop l3 mov cx,c mov bx,d mov a[bx],cx add d,2 mov bx,e add b[bx],cx pop bx pop cx pop dx loop l2 pop cx add e,2 loop l1 mov cx,4 mov c,0 mov d,0 mov e,0 l6: mov bx,c mov ax,b[bx] push cx mov cx,0 l7: mov dx,0 div mn add dx,30h push dx inc cx cmp ax,0 jne l7 l8: mov bx,d pop dx mov buf[bx],dl add d,1 loop l8 mov bx,d mov buf[bx],',' add d,1 add c,2 pop cx loop l6 mov bx,d mov buf[bx],'$' mov dx,0600h mov bh,0 mov ah,2 int 10h mov ah,9 mov dx,offset str2 int 21h mov ah,9 mov dx,offset buf int 21h mov ax,0 int 16h MOV AX,4c00H INT 21H Cseg ENDS END Start