Построить фигуру - Assembler
Формулировка задачи:
Всем привет. Есть такой код:
Который выводит на экран 5 точек.
Вопрос: как сделать так, чтобы точки выстроить такой фигурой:
*
**
***
?
;Установим графический режим EGA mov АН,00h ;(1)Функция задания режима mov AL,10h ;(2)Графический режим EGA int 10h ;(3)Вызов BIOS ;Нарисуем прямую линию в цикле по Х mov SI,150 ;(4)Начальная Х-координата mov CX,5 ;(5)Число точек по горизонтали line: push CX ;(6)Сохраним его в стеке mov AX,0Ch ;(7)Функция вывода пиксела mov AL,4 ;(8)Цвет красный mov ВН,0 ;(9)Видеостраница mov CX,SI ;(10)Х-координата (переменная) mov DX,175 ;(11)Y-координата (константа) int 10h ;(12)Вызов BIOS inc SI ;(13)Инкремент Х-координаты pop CX ;(14)Восстановим счетчик шагов loop line ;(15)Цикл из CX шагов ;Остановим программу для наблюдения результата ее работы mov АН,08h ;(16)Функция ввода с клавиатуры без эха int 21h ;(17)Вызов DOS ;Переключим видеоадаптер назад в текстовый режим mov АН,00h ;(18)Функция задания режима mov AL,03h ;(19)Текстовый режим int 10h ;(20)Вызов BIOS
Thanks for help my diary guys! I would not cope without you <3
Решение задачи: «Построить фигуру»
textual
Листинг программы
; masm dos com # .286 .model tiny .code org 100h start: mov ax,3 int 10h mov bx,0Fh mov cx,3 mov dx,200h @@: mov ah,2 int 10h mov ax,900h+"*" int 10h dec dh loop @b mov ah,0 int 16h ret end start
Объяснение кода листинга программы
Код, представленный в вопросе, написан на языке Assembler и выполняет следующие действия:
- Создание фигуры
Переменная
ax
используется для определения типа рисуемой фигуры. Значение 3 указывает на прямоугольник, а значение 900h +*
- на окружность. Переменнаяbx
используется для определения цвета фигуры. Значение 0Fh соответствует цвету 15 (белый). Переменнаяcx
используется для определения количества строк (или радиуса окружности), которые нужно нарисовать. Значение 3 указывает на 3 строки (или радиус окружности). Переменнаяdx
используется для определения смещения фигуры по горизонтали. Значение 200h соответствует смещению на 200 горизонтальных пикселей. - Рисование фигуры
Переменная
ah
используется для определения функции, которую нужно вызвать для рисования фигуры. Значение 2 соответствует функции вывода символа. Переменнаяal
используется для определения символа, который нужно нарисовать. Значение 900h +*
соответствует символу*
(окружность). После вывода символа происходит уменьшение значенияdh
на единицу, что позволяет нарисовать следующую строку (или уменьшить радиус окружности). - Завершение рисования фигуры
После завершения рисования фигуры (когда достигнуто значение
dh
равное нулю) вызывается функция завершения рисования (переменнаяah
равна 0), и выполнение программы завершается (переменнаяret
).