1-как сделать что параметры вводимые в меню передавались анимации и присваивались переменным(a,b)
2- как сделать чтоб при прорисовки фигуры при нажатии на эскейп выходило не в дос а в меню))))
Пожалуйст помогите)))
Код: Выделить всё
macro SetPixel x,y,color{
mov ax,0C00h+color
mov cx,x
mov dx,y
int 10h
}
org 100h
mov ax,3
int 10h
push 0B800h
pop es
;Вывод текста
mov ah,9
mov dx,x
int 21h
mov dx,y
int 21h
mov dx,start
int 21h
mov dx,exit
int 21h
xor bx,bx
main:and bx,3
imul di,bx,160
mov byte[es:di],'>'
;читаем символ с клавиатуры
xor ax,ax
int 16h
imul di,bx,160
mov byte[es:di],' '
cmp ah,72
jz up
cmp ah,80
jz down
cmp bx,2
jnc @f
cmp ah,75
jz left
cmp ah,77
jz right
jmp main
@@:
cmp al,13
jnz main
_enter:cmp bx,2
jnz quit
;тут код при выборе пункта "начать"
;org 100h
mov ax,0010h ; графический режим
int 10h ; 640x350x2 (4 цвета)
fldz
mov ecx,8192;Генерируем координаты фигуры (8192 точки)
mov ah,a
mov ah,a
@@:inc si
mov a,byte[si]
fld st0
fld st0
fimul [a]
fsin
fimul [SCALE]
fiadd [Center]
fistp [Coords+ecx*4-4] ;coords[ecx].x=sin(t*a)
fimul [b]
fcos
fimul [SCALE+2]
fiadd [Center+2]
fistp [Coords+ecx*4-2] ;coords[ecx].y=cos(t*b)
fadd [step] ;t=t+step
loop @b
;Анимация
@@:inc di
and edi,8191
SetPixel [Coords+edi*4+0],[Coords+edi*4+2],1 ;След от точки
SetPixel [Coords+edi*4+4],[Coords+edi*4+6],3 ;Точка
mov dx,1000
xor cx,cx
mov ah,86h
int 15h ;ожидание cx:dx микросекунд
in al,60h ;Считываем скан-код с клавиатуры
dec al ;Если нажат escape - выход
jnz @b
;jmp main
ret
jmp $
right:inc byte[es:di+32]
jmp main
left:dec byte[es:di+32]
jmp main
up:dec bx
jmp main
down:inc bx
jmp main
quit:
ret
x db ' Verhina po x - 1',13,10,'$'
y db ' Verhina po y - 1',13,10,'$'
start db ' Nachat`',13,10,'$'
exit db ' Exit',13,10,'$'
SCALE dw 250,150
Center dw 320,175
a dw 5
b dw 3
step dd 7.66990393942820614859043794745e-4 ;2PI/8192
Coords rw 16384