Ввод и вывод двумерного массива в TASM - Assembler
Формулировка задачи:
Здравствуйте, не могу понять где ошибка в моей программе. В начале я ввожу числа и вроде всё нормально, но когда программа начинает их выводить, то делает она это очень странным образом. На подобии змейки:
Пример:
0 0 0 0 0
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 5 5 6
0 1 2 3 4
1 2 3 4 4
2 3 4 4 5
3 4 4 5 5
4 4 5 5 6
Вот, собственно, сам код программы:
Листинг программы
- .model small
- .stack
- .data
- mas db 5 dup (5 dup (?))
- nxtln db 10, 13, "$"
- spaace db 32, "$"
- .code
- space proc
- push dx
- push ax
- mov dx, offset spaace
- mov ah, 09h
- int 21h
- pop ax
- pop dx
- ret
- space endp
- nextln proc
- push dx
- push ax
- mov dx, offset nxtln
- mov ah, 09h
- int 21h
- pop ax
- pop dx
- ret
- nextln endp
- main:
- mov ax, @data
- mov ds, ax
- xor ax, ax
- mov si, 0
- mov bx, 0
- mov cx, 5
- in_external:
- push cx
- mov cx, 5
- mov si, 0
- in_iternal:
- mov ah, 01h
- int 21h
- sub al, 47
- mov mas[bx][si], al
- inc si
- call space
- loop in_iternal
- in_next:
- call nextln
- pop cx
- inc bx
- loop in_external
- call nextln
- mov si, 0
- mov bx, 0
- mov cx, 5
- out_external:
- push cx
- mov cx, 5
- mov si, 0
- out_iternal:
- mov ah, 02h
- mov dl, mas[bx][si]
- add dl, 47
- int 21h
- inc si
- call space
- loop out_iternal
- out_next:
- call nextln
- pop cx
- inc bx
- loop out_external
- mov ax, 4c00h
- int 21h
- end main
Решение задачи: «Ввод и вывод двумерного массива в TASM»
textual
Листинг программы
- db 1,2,3,4,5,6,7,8,9
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д