Построить квадратную матрицу порядка 2n (emu8086) - Assembler
Формулировка задачи:
Построить квадратную матрицу порядка 2n. Необходимо компилировать на emu8086.
спасибо за ранее
Решение задачи: «Построить квадратную матрицу порядка 2n (emu8086)»
textual
Листинг программы
.model tiny .code org 100h start: mov al,n mul al xchg dx,ax push dx add dx,0Fh mov cl,4 shr dx,cl mov ah,48h mov bx,dx int 21h push ax pop es mov al,1 xor di,di pop cx fill: stosb inc al loop fill mov ah,49h int 21h int 20h n equ 3 end start
Объяснение кода листинга программы
- .model tiny — устанавливает модель памяти для программы (в данном случае маленькая модель)
- .code — указывает на то, что следующий код должен быть выполнен
- org 100h — устанавливает базовый адрес для сегмента кода
- start: — определяет точку входа в программу
- mov al,n — перемещает значение переменной n в регистр al
- mul al — выполняет умножение значения регистра al на 100
- xchg dx,ax — меняет местами значения регистра dx и ax
- push dx — отправляет значение регистра dx в стек
- add dx,0Fh — добавляет 15 к значению регистра dx
- mov cl,4 — перемещает значение 4 в регистр cl
- shr dx,cl — выполняет сдвиг вправо значения регистра dx на 4 позиции
- mov ah,48h — перемещает значение 48 в регистр ah
- mov bx,dx — перемещает значение регистра dx в регистр bx
- int 21h — выполняет ввод/вывод функции 21, в данном случае выводит значение регистра bx
- push ax — отправляет значение регистра ax в стек
- pop es — восстанавливает значение регистра es из стека
- mov al,1 — устанавливает значение регистра al равным 1
- xor di,di — устанавливает значение регистра di равным 0 (используется для итерации по матрице)
- pop cx — восстанавливает значение регистра cx из стека
- fill: — определяет цикл заполнения матрицы
- stosb — выполняет заполнение строки матрицы символами
- inc al — увеличивает значение регистра al на 1 (используется для перехода к следующей строке матрицы)
- loop fill — выполняет цикл до тех пор, пока значение регистра al не станет равным 0
- mov ah,49h — перемещает значение 49 в регистр ah
- int 21h — выполняет ввод/вывод функции 21, в данном случае выводит сообщение об успешном выполнении программы
- int 20h — выполняет переход в защищенный режим и завершает работу программы
- n equ 3 - определяет значение переменной n (в данном случае равно 3)