cześć wam ;). Potrzebuję pomocy obecnie pracuje nad projektem rysowania funkcji w FASMie funkcja to y=0.5*x^3-0.2 nie wiem jak zrobić skalę, i tak jak wykładowca mówił w tym programie funkcja będzie się rysować 'prostymi' tzn bez wygładzeń (nie bardzo wiem jak to określić, sinus zamiast falować będzie miał kąty)... Poniżej zamieszczam kod programu:
format MZ
entry main:start
stack 100h
macro wypisz txt{
mov dx, txt
mov ah, 9
int 21h
}
macro kursor x,y ;ustawienie kursora
{
mov bh,0
mov dl,x
mov dh,y
mov ah,2
int 10h
}
segment main
start:
FINIT
mov ax,dane
mov ds,ax
mov ah, 0
mov al, 3
int 10h
kursor 0,0
wypisz tekst1
kursor 2,2
wypisz tekst2
kursor 15,5
mov ah, 7
int 21h
cmp al, 13 ;enter
je dalej
;tryb graficzny;
dalej:
mov ax, 12h
mov bh, 0h
int 10h
mov dx,480 ;wysokosc max wysokosc 480
mov cx,320 ;szerokosc max szerokosc 640
;rysowanie osi pionowej
wysokosc:
mov al, 10 ;rysowanie pojedynczego pixela
mov ah, 0ch
int 10h
cmp dx,0
dec dx
jne wysokosc
mov dx, 240
mov cx, 640
;-rysowanie osi poziomej
szerokosc:
mov ah, 0ch
int 10h
cmp cx,2
dec cx
jne szerokosc
;rysowanie strzalek
mov cx,630
mov dx,235
grot1:
mov al,10
mov ah,0ch
int 10h
inc cx
mov al,10
mov ah,0ch
int 10h
inc cx
inc dx
cmp cx,640
jne grot1
mov cx,630
mov dx,245
dol:
mov al,10
mov ah,0ch
int 10h
inc cx
mov al,10
mov ah,0ch
int 10h
inc cx
dec dx
cmp cx,640
jne dol
mov cx,315
mov dx,10
grot2:
mov al,10
mov ah,0ch
int 10h
dec dx
mov al,10
mov ah,0ch
int 10h
dec dx
inc cx
cmp dx,0
jne grot2
mov cx,325
mov dx,10
gora:
mov al,10
mov ah,0ch
int 10h
dec dx
mov al,10
mov ah,0ch
int 10h
dec dx
dec cx
cmp dx,0
jne gora
;--> X <--
mov dx, 250
mov cx, 630
X1:
mov al,12
mov ah,0ch
int 10h
inc cx
inc dx
cmp cx,636
jne X1
mov dx, 255
mov cx, 630
X2:
mov al,12
mov ah,0ch
int 10h
inc cx
dec dx
cmp cx,636
jne X2
;--> Y <--
mov dx, 5
mov cx, 310
Y1:
mov al,12
mov ah,0ch
int 10h
dec cx
inc dx
cmp cx,302
jne Y1
mov dx, 8
mov cx, 305
Y2:
mov al,12
mov ah,0ch
int 10h
dec cx
dec dx
cmp dx,4
jne Y2
mov ebp, Wynik
call Rysuj_funkcje ;y=0.5*x^3-0.2
mov ah, 00h
int 16h
call koniec
mov ah, 00h
mov al, 03h
int 10h
mov ah, 4Ch
int 21h
Rysuj_funkcje:
mov cx, 639
mov bh, 0
mov al, 20
mov ah, 0Ch
mov cx, 0
Rysuj_petla:
fld [X]
fmul [X]
fmul [X]
fmul [B]
fsub [A]
FRNDINT
fistp [Wynik] ;FBSTP Wynik
fld1
fld [X]
faddp
fstp [X]
mov dx, 240
sub dx, WORD PTR Wynik
int 10h
add cx, 5 ;inc cx
cmp cx, 635
jne Rysuj_petla
ret
koniec:
mov ax,0003h ; Int 10 - Video BIOS Services
int 10h
mov ah, 4ch
int 21h
segment dane
tekst1 db 'Projekt rysowania wykresu funkcji y=0.5*x^3-0.2.$'
tekst2 db 'xx$'
tekst3 db 'Podaj przedzial:$'
Wynik dd 0.0
X dd 1.0
A dd 0.2
B dd 0.5
pom dw 0
dz dw 10