Пока останавилась на построении набора квадратиков..Вот что получилось:
text segment 'code' ; (1) начало сегмента команд
assume CS:text,DS:data; (2)
vertical proc; (3) объявление процедуры построения вертикальной линии
v: ; (4)
push CX; (5) сохраним в стек счетчик цикла
mov AH,0Ch; (6) функция вывода пикселя
mov AL,6; (7) установка цвета
mov BH,0; (8) видеостраница
mov CX,SI; (9) установка X-координаты
int 10h; (10) вызов BIOS
inc DX; (11) счетчик Y-координаты
pop CX; (12) выгрузим из стека счетчик цикла
loop v; (13) уменьшим его на единицу
ret; (14) выход из подпрограммы
vertical endp; (15) конец текста подпрограммы
horizontal proc; (16) объявление процедуры построения горизонтальной линии
h: ; (17)
push CX; (18) сохраним в стек счетчик цикла
mov AH,0Ch; (19) функция вывода пикселя
mov AL,6; (20) установка цвета
mov BH,0; (21) видеостраница
mov CX,SI; (22) установка X-координаты
int 10h; (23) вызов BIOS
inc SI; (24) счетчик Х-координаты
pop CX; (25) выгрузим из стека счетчик цикла
loop h; (26) уменьшим его на единицу
ret; (27) выход из подпрограммы
horizontal endp; (28) конец текста подпрограммы
begin: ;(29) начало основной программы
mov AX,00h; (30) функция задания режима
mov AL,10h; (31) графический режим EGA
int 10h; (32) вызов BIOS
mov cx,3
rect: push cx
mov SI,100; (33) Х-координата
add si,i
mov DX,100; (34) Y-координата
add dx,i
mov CX,20; (35) длина стороны
call vertical; (36) вызов подпрограммы
mov SI,100; (37) Х-координата
add si,i
mov DX,100; (38) Y-координата
add dx,i
mov CX,20; (39) длина стороны
call horizontal; (40) вызов подпрограммы
mov SI,120; (33) Х-координата
add si,i
mov DX,100; (34) Y-координата
add dx,i
mov CX,20; (35) длина стороны
call vertical; (36) вызов подпрограммы
mov SI,100; (37) Х-координата
add si,i
mov DX,120; (38) Y-координата
add dx,i
mov CX,21; (39) длина стороны
call horizontal; (40) вызов подпрограммы
add i,22
pop cx
loop rect
mov AH,08h
int 21h
mov AH,00h
mov AL,03h
int 10h
mov AX,4C00h; (41) завершение программы
int 21h; (42)
text ends; (43) конец сегмента команд
data segment
i dw 0
data ends
stk segment stack
dw 128 dup (0)
stk ends
end begin; (44) конец текста программы
Хотела получить рядом расположенные квадратики..но как я предполагаю содержимое регистра СХ сбивается..
Как исправить - не пойму..