Рисование зарисованого квадрата - 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 ; Смещение линии по у
Объяснение кода листинга программы
В данном коде выполняется рисование зарисованого квадрата. Вот список действий:
- Переменная
DX
получает значение 100. - Выполняется команда вывода пикселя на экран. Цвет пикселя хранится в регистре
AL
, видеостраница - в регистреBH
, X-координата пикселя - в регистреCX
, Y-координата пикселя - в регистреDX
. - Увеличивается значение регистра
SI
. - Из регистра
CX
выталкивается значение в стек, а затем увеличивается значение регистраCX
. - Выполняется цикл
line
, пока не будет выполнено условиеloop
. - Увеличивается значение регистра
DX
, что обеспечивает смещение линии по Y.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д