Массив: Сформировать квадратную матрицу порядка n по заданному образцу - Assembler

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

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

Здравствуйте! Очень нужно, надо срочно сдавать, а за такой короткий срок даже разобраться не успеваю... Возможно, кому-то уже приходилось справиться с подобным. 1. Сформировать квадратную матрицу порядка n по заданному образцу: 1 2 3 ... n n n-1 n-2 ...1 1 2 3 ... n n n-1 n-2 ...1 ...... n n-1 n-2 ...1 2. Дана квадратная целочисленная матрица порядка n. Сформировать результирующий одномерный массив, элементами которого являются строчные суммы тех строк, которые начинаются с k идущих подряд положительных чисел. Второе задание связано с матрицей с первого. И, желательно, пожалуйста, под TASM, Far или emu Буду очень благодарна

Решение задачи: «Массив: Сформировать квадратную матрицу порядка n по заданному образцу»

textual
Листинг программы
.model small
.stack 256
.data
    array dw 6*6 dup (0)
.code
start:
    mov ax, @data
    mov ds, ax
    mov es, ax
    
    mov cx, 3
    mov bx, 0
    mov di, 0
_loop1: 
    push cx
    mov cx, 6
    push cx
_loop2:
        inc di
        mov array[bx], di
        inc bx
        inc bx
        loop _loop2
        pop cx
        
_loop3:
        mov array[bx], di
        inc bx
        inc bx
        dec di
        loop _loop3
    pop cx
    loop _loop1
    
    call OutArray
    xor ax, ax
    int 16h
    mov ax, 4c00h
    int 21h
    
OutArray proc
    mov cx, 6
    mov bx, 0
@@1:
    push cx
    mov cx, 6
    mov dl, ' ' 
    @@2:
        mov ax, array[bx]
        call OutInt
        inc bx
        inc bx
        mov ah, 2
        int 21h
        loop @@2
    mov dl, 13
    mov ah, 2
    int 21h
    mov dl, 10
    int 21h
    pop cx
    loop @@1
    ret
OutArray endp 
 
OutInt proc
    push ax
    push dx
    push bx
    push cx
    push ds
    push di
    push cs
    pop ds
    test ax, ax
    jns oi1
    mov di, 1
    neg ax
oi1:
    xor cx, cx
    mov bx, 10
oi2:
    xor dx, dx
    div bx
    add dx, '0'
    push dx
    inc cx
    test ax, ax
    jne oi2
    
    mov ah, 2
    cmp di, 1
    jne oi3
    mov dl, '-'
    int 21h
oi3:
    pop dx
    int 21h
    loop oi3
    pop di
    pop ds
    pop cx
    pop bx
    pop dx
    pop ax
    ret
OutInt endp
        
end start

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

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