Работа с матрицами - 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

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

11   голосов , оценка 4 из 5