Построить равнобедренный треугольник красного цвета - Assembler
Формулировка задачи:
В общем задали нам такое чудо, даже не знаю как подступиться. Помогите!!!
Решение задачи: «Построить равнобедренный треугольник красного цвета»
textual
Листинг программы
org 100h start: mov ax,13h int 10h push 0A000h pop es mov al,02h mov di,100*320+160 mov si,1 mov cx,20 a1: push cx mov cx,si rep stosb add di,319 sub di,si add si,2 pop cx loop a1 mov ah,0 int 16h mov ax,3 int 10h ret
Объяснение кода листинга программы
- org 100h — начало программы, загрузка сегмента данных в регистр ds
- start: mov ax,13h — установка цвета курсора в 13 (красный)
- int 10h — вывод на экран информации о курсоре
- push 0A000h — сохранение текущего сегмента нажатий клавиш в стеке
- pop es — восстановление сегмента нажатий клавиш из стека
- mov al,02h — установка цвета фона в 2 (белый)
- *mov di,100320+160** — вычисление координат для верхней левой точки треугольника
- mov si,1 — установка счётчика для первой строки (верхней)
- mov cx,20 — установка счётчика для количества строк треугольника
- a1: push cx — сохранение счётчика в стеке
- mov cx,si — восстановление счётчика из стека
- rep stosb — перебор всех символов строки треугольника от верхней до нижней
- add di,319 — смещение на следующую строку треугольника
- sub di,si — смещение на символ вправо в текущей строке треугольника
- add si,2 — переход к следующей строке треугольника
- pop cx — восстановление счётчика из стека
- loop a1 — повторение цикла пока не будет достигнута последняя строка треугольника
- mov ah,0 — установка регистра ah в 0 для функции вывода на экран
- int 16h — вывод на экран информации о курсоре (возможно проверка работоспособности после завершения треугольника)
- mov ax,3 — установка регистра ax в 3 для функции вывода на экран
- int 10h — вывод на экран информации о курсоре (возможно проверка работоспособности после завершения треугольника)
- ret — конец программы