Asembler graficzny wykres funkcji

Asembler graficzny wykres funkcji
MA
  • Rejestracja:około 12 lat
  • Ostatnio:około 12 lat
  • Postów:1
0

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:

Kopiuj
 
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


edytowany 1x, ostatnio: martynio
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)