; Program rysuje na ekranie okrag w trybie graficznym 320x200 ; ; Autor: Bogdan D. ; kontakt: bogdandr (at) op (dot) pl ; ; nasm -O999 -o kolo.com -f bin kolo.asm ; ; Copyright (C) 2005-2007 Bogdan 'bogdro' Drozdowski, bogdandr @ op . pl ; ; Ten program jest wolnym oprogramowaniem; mozesz go rozpowszechniac ; i/lub modyfikowac zgodnie z licencja GNU Lesser General Public License ; (GNU LGPL) w wersji wydanej przez Fundacje Wolnego Oprogramowania; ; wedlug wersji 3 Licencji lub (jesli wolisz) jednej z pozniejszych wersji. ; ; Ten program jest udostepniany z nadzieja, ze bedzie uzyteczny, lecz ; BEZ JAKIEJKOLWIEK GWARANCJI; nawet domyslnej gwarancji PRZYDATNOSCI ; HANDLOWEJ albo PRZYDATNOSCI DO OKRESLONYCH ZASTOSOWAN. W celu uzyskania ; blizszych informacji - Licencja GNU Lesser General Public License. ; ; Z pewnoscia wraz z niniejszym programem otrzymales tez egzemplarz ; Licencji GNU Lesser General Public License; jesli nie - napisz do ; Fundacji Wolnego Oprogramowania: ; Free Software Foundation ; 51 Franklin Street, Fifth Floor ; Boston, MA 02110-1301 ; USA org 100h mov ax, 13h int 10h ; wlaczamy tryb graficzny mov ax, 0a000h mov es, ax ; ES = segment pamieci ekranu mov cx, 360 ; tyle pikseli narysujemy finit ; zerowanie FPU fldpi ; stos FPU: pi fild word [sto80] ; FPU: 180, pi fdivp st1, st0 ; pi/180 fld1 ; 1, pi/180 fild word [r] ; r, 1, pi/180 fldz ; kat=0, r, 1, pi/180 mov al, 15 ; kolor punktu ( bialy ) ; rysujemy punkty na wspolrzednyh: ; 100 - r*sin(kat), 160 + r*cos(kat) rysuj: fld st0 ; kat, kat, r, 1, pi/180 fmul st4 ; kat w radianach mov di, 100*320 + 160 ; srodek ekranu fsin ; sin(kat), kat, r, 1, pi/180 fmul st2 ; sin(kat)*r, kat, r, 1, pi/180 fistp word [wys] ; kat, r, 1, pi/180 fld st0 ; kat, kat, r, 1, pi/180 fmul st4 ; kat w radianach fcos ; cos(kat), kat, r, 1, pi/180 fmul st2 ; r*cos(kat), kat, r, 1, pi/180 fistp word [szer] ; kat, r, 1, pi/180 add di, [szer] ; dodajemy odleglosc pozioma mov dx, [wys] mov bx, dx shl dx, 8 shl bx, 6 add dx, bx ; dx = wys*320 sub di, dx ; odejmujemy odleglosc pionowa mov [es:di], al ; narysuj piksel fadd st0, st2 ; kat += 1 dec cx jnz rysuj ; jesli nie przerobilismy wszystkich ; 360 katow, to od nowa ; ------------------------- finit ; zerowanie FPU xor ah, ah int 16h ; czekamy na klawisz mov ax, 3 int 10h ; powrot do trybu tekstowego mov ax, 4c00h int 21h ; wyjscie z programu r dw 50 szer dw 0 wys dw 0 sto80 dw 180