Построить фигуру - Assembler

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

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

Всем привет. Есть такой код:
                ;Установим графический режим 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
Который выводит на экран 5 точек. Вопрос: как сделать так, чтобы точки выстроить такой фигурой: * ** *** ?
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 и выполняет следующие действия:

  1. Создание фигуры Переменная ax используется для определения типа рисуемой фигуры. Значение 3 указывает на прямоугольник, а значение 900h + * - на окружность. Переменная bx используется для определения цвета фигуры. Значение 0Fh соответствует цвету 15 (белый). Переменная cx используется для определения количества строк (или радиуса окружности), которые нужно нарисовать. Значение 3 указывает на 3 строки (или радиус окружности). Переменная dx используется для определения смещения фигуры по горизонтали. Значение 200h соответствует смещению на 200 горизонтальных пикселей.
  2. Рисование фигуры Переменная ah используется для определения функции, которую нужно вызвать для рисования фигуры. Значение 2 соответствует функции вывода символа. Переменная al используется для определения символа, который нужно нарисовать. Значение 900h + * соответствует символу * (окружность). После вывода символа происходит уменьшение значения dh на единицу, что позволяет нарисовать следующую строку (или уменьшить радиус окружности).
  3. Завершение рисования фигуры После завершения рисования фигуры (когда достигнуто значение dh равное нулю) вызывается функция завершения рисования (переменная ah равна 0), и выполнение программы завершается (переменная ret).

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

11   голосов , оценка 4.182 из 5