Построить равнобедренный треугольник красного цвета - 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

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

  1. org 100h — начало программы, загрузка сегмента данных в регистр ds
  2. start: mov ax,13h — установка цвета курсора в 13 (красный)
  3. int 10h — вывод на экран информации о курсоре
  4. push 0A000h — сохранение текущего сегмента нажатий клавиш в стеке
  5. pop es — восстановление сегмента нажатий клавиш из стека
  6. mov al,02h — установка цвета фона в 2 (белый)
  7. *mov di,100320+160** — вычисление координат для верхней левой точки треугольника
  8. mov si,1 — установка счётчика для первой строки (верхней)
  9. mov cx,20 — установка счётчика для количества строк треугольника
  10. a1: push cx — сохранение счётчика в стеке
  11. mov cx,si — восстановление счётчика из стека
  12. rep stosb — перебор всех символов строки треугольника от верхней до нижней
  13. add di,319 — смещение на следующую строку треугольника
  14. sub di,si — смещение на символ вправо в текущей строке треугольника
  15. add si,2 — переход к следующей строке треугольника
  16. pop cx — восстановление счётчика из стека
  17. loop a1 — повторение цикла пока не будет достигнута последняя строка треугольника
  18. mov ah,0 — установка регистра ah в 0 для функции вывода на экран
  19. int 16h — вывод на экран информации о курсоре (возможно проверка работоспособности после завершения треугольника)
  20. mov ax,3 — установка регистра ax в 3 для функции вывода на экран
  21. int 10h — вывод на экран информации о курсоре (возможно проверка работоспособности после завершения треугольника)
  22. ret — конец программы

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

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