Ввод матрицы и вывод ее побочной диагонали - Assembler
Формулировка задачи:
Написать exe-программу, в которой нужно ввести двухмерный массив 4х4. И вывести с него побочную диагональ.
Решение задачи: «Ввод матрицы и вывод ее побочной диагонали»
textual
Листинг программы
model tiny .code ORG 100h begin: JMP start start: MOV AH,9 ; запрос на ввод.. MOV DX, offset mess0 INT 21h MOV DI, offset buff ; в DI будем писать STOSB'ом MOV BX,4 ; счётчик строк MOV DX,4 ; счётчик чисел в строке create: ;<=====; начинаем ввод и сохранение ================// MOV CX,2 ; ограничим число 2-мя знаками DEC DX ; уменьшаем счётчик чисел @1: MOV AH,1 ; ввод с эхо.. INT 21h STOSB ; сохраняем первый символ в DI LOOP @1 ; ..следом второй. MOV AL,' ' ; пробел/разделитель INT 29h STOSB ; его тоже в DI.. OR DX,DX ; последнее число в строке? JNZ create ; нет - заполняем строку дальше MOV AH,9 ; строка закончилась.. MOV DX,offset crlf ; новая строка! INT 21h DEC BX ; уменьшаем счётчик строк OR BX,BX ; последняя строка? JZ next ; да - выходим из цикла ввода MOV DX,4 ; восстанавливаем кол-во чисел в строке JMP create ; заполняем следующую строку массива next: ;<=====; выводим результат на экран ================// MOV AH,9 ; мессага.. MOV DX, offset mess1 INT 21h MOV CX,4 ; сколько пар цифр выводить MOV SI, offset buff ; источник - буфер print: LODSB ; читаем первый символ INT 29h ; выводим его на экран LODSB ; второй символ.. INT 29h LODSB ; прихватим с собой пробел INT 29h ADD SI,12 ; передвинем указатель на 4 триады символов LOOP print ; мотаем цикл пока СХ > 0 exit: ; выход! XOR AX,AX INT 16h INT 20h ret mess0 DB 'CREATE ARRAY...',13,10 DB '====================',13,10,'$' mess1 DB '====================',13,10 DB 'RESULT: $' crlf DB 13,10,'$' buff DB 80 DUP(0) ; буфер для выхлопа end begin
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д