Построить квадратную матрицу порядка 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

Объяснение кода листинга программы

  1. .model tiny — устанавливает модель памяти для программы (в данном случае маленькая модель)
  2. .code — указывает на то, что следующий код должен быть выполнен
  3. org 100h — устанавливает базовый адрес для сегмента кода
  4. start: — определяет точку входа в программу
  5. mov al,n — перемещает значение переменной n в регистр al
  6. mul al — выполняет умножение значения регистра al на 100
  7. xchg dx,ax — меняет местами значения регистра dx и ax
  8. push dx — отправляет значение регистра dx в стек
  9. add dx,0Fh — добавляет 15 к значению регистра dx
  10. mov cl,4 — перемещает значение 4 в регистр cl
  11. shr dx,cl — выполняет сдвиг вправо значения регистра dx на 4 позиции
  12. mov ah,48h — перемещает значение 48 в регистр ah
  13. mov bx,dx — перемещает значение регистра dx в регистр bx
  14. int 21h — выполняет ввод/вывод функции 21, в данном случае выводит значение регистра bx
  15. push ax — отправляет значение регистра ax в стек
  16. pop es — восстанавливает значение регистра es из стека
  17. mov al,1 — устанавливает значение регистра al равным 1
  18. xor di,di — устанавливает значение регистра di равным 0 (используется для итерации по матрице)
  19. pop cx — восстанавливает значение регистра cx из стека
  20. fill: — определяет цикл заполнения матрицы
  21. stosb — выполняет заполнение строки матрицы символами
  22. inc al — увеличивает значение регистра al на 1 (используется для перехода к следующей строке матрицы)
  23. loop fill — выполняет цикл до тех пор, пока значение регистра al не станет равным 0
  24. mov ah,49h — перемещает значение 49 в регистр ah
  25. int 21h — выполняет ввод/вывод функции 21, в данном случае выводит сообщение об успешном выполнении программы
  26. int 20h — выполняет переход в защищенный режим и завершает работу программы
  27. n equ 3 - определяет значение переменной n (в данном случае равно 3)

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

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