Рисование зарисованого квадрата - Assembler

Узнай цену своей работы

Формулировка задачи:

Здраствуйте,сразу извиняюсь за тафтологию.У меня возникла проблема с рисованием зарисованого квадрата.В общем, сначала я не знал ,как что-то рисовать в асм ,потому в гугле нашел алгоритм рисования линии.Потом по идее ,чтоб зарисовать квадратную область нужно сделать цикл и смещать линии по каждому прохождению цикла(так я делал).Ну и собственно проблема ,что при цикле оно рисует только начальную линию.
ASSUME CS:CODE , DS:DATA
DATA SEGMENT
DATA ENDS
CODE SEGMENT
begin: mov AX,DATA
 mov DS,AX
 mov AH,00h
 mov AL,10h
 int 10h ; Вызов биос в режиме AL (ега)
 mov CX,50
square: push CX
 mov SI,150 ; Начальная координата х
 mov CX,200 ; число точек по горизонтали
 line: push CX
 mov AH,0Ch
 mov AL,1
 mov BH,0
 mov CX,SI
 mov DX,100
 int 10h ; Вывод пиксела, цвет AL, видеостраница BH, Х - CX, Y - DX
 inc SI
 pop CX
 loop line
 inc DX ; Смещение линии по у
 pop CX
loop square
 mov AH,08h
 int 21h ; Посмотрим результат
 mov AH,00h
 mov AL,03h
 int 10h ; Текстовый режим (AL)
 mov AX,4c00h
 int 21h
CODE ENDS
 END begin

Решение задачи: «Рисование зарисованого квадрата»

textual
Листинг программы
 mov DX,100
 int 10h ; Вывод пиксела, цвет AL, видеостраница BH, Х - CX, Y - DX
 inc SI
 pop CX
 loop line
 inc DX ; Смещение линии по у

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

В данном коде выполняется рисование зарисованого квадрата. Вот список действий:

  1. Переменная DX получает значение 100.
  2. Выполняется команда вывода пикселя на экран. Цвет пикселя хранится в регистре AL, видеостраница - в регистре BH, X-координата пикселя - в регистре CX, Y-координата пикселя - в регистре DX.
  3. Увеличивается значение регистра SI.
  4. Из регистра CX выталкивается значение в стек, а затем увеличивается значение регистра CX.
  5. Выполняется цикл line, пока не будет выполнено условие loop.
  6. Увеличивается значение регистра DX, что обеспечивает смещение линии по Y.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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