Массив: на входе принимается двухмерный массив 4х7, а выводит только две первые строки - Assembler

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

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

Ребят, выручайте. Нужно написать com-программу, которая на входе принимает ведённый двухмерный массив 4х7, а выводит только две(2) первые строки. (TASM) П.С. Не ругайте только . Я больше по Веб, а в ассемблере для меня пока всё уж слишком тяжело. Нашел на форуме несколько похожих исходников и пытался их переделать. Результат один и тот же - ломается DosBox или выводятся непонятные символы(скорее всего это он меня просто посылает куда подальше из-за моих кривых рук) Надеюсь на Ваше понимание

Решение задачи: «Массив: на входе принимается двухмерный массив 4х7, а выводит только две первые строки»

textual
Листинг программы
model   tiny
.code
org 100h
maxX    equ 7
maxY    equ 4
outY    equ 2
start:  mov cx,maxY
    xor bx,bx
inpR:   push    cx
    mov cx,maxX
    xor di,di
inpC:   call    inNum
    or  ah,ah
    jnz inpC
    mov Massiv[bx][di],al
    inc di
    loop    inpC
    add bx,maxX
    pop cx
    loop    inpR
;
    mov ah,9
    lea dx,dbRes
    int 21h
;
    mov cx,outY
    xor bx,bx
outR:   push    cx
    mov al,10
    int 29h
    mov al,13
    int 29h
    mov cx,maxX
    xor di,di
outC:   mov al,massiv[bx][di]
    cbw
    call    outNum
    inc di
    loop    outC
    add bx,maxX
    pop cx
    loop    outR
    ret;
;
inNum   proc
    push    bx
    push    cx
    push    di
    mov ax,bx
    mov bx,maxX
    xor dx,dx
    div bx
    inc al
    add al,'0'
    mov dbRow,al
    mov ax,di
    inc al
    add al,'0'
    mov dbCol,al
    mov ah,9
    lea dx,dbEnter
    int 21h
    xor si,si
    xor di,di
    mov bx,10
IN1:    xor ah,ah
    int 16h
    cmp al,13
    jz  IN3
    cmp al,'-'
    jz  IN2
    cmp al,'0'
    jb  IN1
    cmp al,'9'
    ja  IN1
    int 29h
    and ax,0fh
    xchg    di,ax
    xor dx,dx
    mul bx
    test    al,80h
    jz  INE
    shl ax,1
INE:    add di,ax
    jmp short IN1
IN2:    or  di,di
    jnz IN1
    inc si
    int 29h
    jmp IN1
IN3:    mov ax,di
    or  si,si
    jz  IN4
    neg al
IN4:    pop di
    pop cx
    pop bx
    ret
inNum   endp
;
outNum  proc
    push    bx
    push    cx
    push    di
    xor si,si
    test    ax,8000h
    jz  ON1
    inc si
    neg ax
ON1:    mov bx,10
    xor cx,cx
ON2:    xor dx,dx
    div bx
    push    dx
    inc cx
    or  ax,ax
    jnz ON2
    or  si,si
    jz  ON3
    mov al,'-'-'0'
    push    ax
    inc cx
ON3:    mov al,' '-'0'
ON4:    push    ax
    inc cx
    cmp cx,8
    jb  ON4
ON5:    pop ax
    add al,'0'
    int 29h
    loop    ON5
    pop di
    pop cx
    pop bx
    ret
;
outNum  endp
dbRes   db  10,13,'Result:$'
dbEnter db  10,13,'Enter element ['
dbRow   db  ?
    db  ','
dbCol   db  ?
    db  ']:=$'
massiv  db  MaxX*MaxY dup(?)
    end start

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

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