matematykaszkolna.pl
zz Hugo: KTOŚ NIE WIE JAK SIE KASUJE HISTORIE POLECEŃ W ASMEBLERZE ? korzystam z Puttiego i pracuje na NASM
24 sty 14:39
Eve: ja NIE WIEM
24 sty 14:39
Dziadek Mróz: Historia poleceń znajduje się w pliku .bashhistory, wystarczy że znajdziesz skrypt na operacje na plikach. Skopiuj .bashhistory do pliku roboczego, np .bashhistoryasm i ten plik wyzeruj emotka
24 sty 15:04
Hugo: dz emotka !
24 sty 18:00
Draghan: "bash" bardzo silnie kojarzy mi się z pingwinkami... Mam dobre skojarzenia?
24 sty 18:15
Hugo: to konsola do pisania .. ale dokladnie nie wiem
24 sty 20:20
Draghan: Używasz Linksa?
24 sty 20:23
Dziadek Mróz: Putty głównie loguje się na linuxach, na Windowsy łatwiej używać telnet'a.
24 sty 20:36
Hugo: używam puttiego na windowsie ale mam ububtu i moze ktoś sie zna to mam tez kali linux
24 sty 20:57
Dziadek Mróz: Najpierw ogarnij podstawy języka, a później rzucaj się na głęboką wodę. Zrób proste programy na arytmetyce, warunkach logicznych i i/o (input/output).
24 sty 21:12
Hugo: A umiałbyś liczyć potęgi i pierwiastki? tego mi brakuje
24 sty 21:17
Hugo: A nie wiecie czemu czasem mam odmowe dostępu? zwykły program chce skompilować http://scr.hu/2pdc/dz0ce
24 sty 21:39
Draghan: A masz prawa do wykonania w tym katalogu?
24 sty 21:58
Stachu: Jeśli się nie mylę to musiisz uruchomić ./hello
24 sty 21:59
Stachu: ./hello.asm to źródło emotka
24 sty 21:59
Stachu: jeśli nie zadziała dej zrzut z ls −a
24 sty 22:00
Saris: ls −l i patrzaj na prawa. Nie jestem dokładnie pewny, ale z którejś komendy jak tworzysz plik to jest z automatu bez prawo wykonywania chyba i musisz ręcznie zmienić.
24 sty 22:01
Stachu: Saris masz racje ls −l
24 sty 22:02
Dziadek Mróz: Na takie programiki to wystarczy: chmod 777 hello.asm Na jakieś pliki ważniejsze: chmod 644 hello.asm
24 sty 22:10
Stachu: Potęgi naturalne liczysz najprościej mnożąc w pętli natomiast sqrt obliczy jednostka zmiennoprzecinokowa: w sekcji data rezerwujesz miejsce w pamięci: od: times 4 db 0 ; 32 bity − 4 bajty sqrt: times 4 db 0 sekcja text: włączenie jedn. zmien.. finit wrzucenie liczby typu int na stos jedn. zmien. fild dword [od] wykonanie obliczen fsqrt pobranie wynikow w "formacie" int fistp dword [sqrt]
24 sty 22:11
Dziadek Mróz: Lub jak ktoś libi literki to: chmod ugo=rwx hello.asm chmod u=rw,go=r hello.asm
24 sty 22:13
Stachu: Dziadem Mróz popatrz na wywołanie nasm−a jest −o hello zatem binarka ma nazwe hello emotka t
24 sty 22:15
Hugo: jak odświeżam to dziala
24 sty 22:54
Hugo: WZMIANKA DO PIERWIASTKÓW/POTĘG podstawy robiłem na rejestrach jak widać wyżej udalo mi sie takie do mnozenia na ASCII section .text global start start: mov eax, 3 mov ebx, 0 mov ecx, liczba1 mov edx, 2 int 80h mov eax, 3 mov ebx, 0 mov ecx, liczba2 mov edx, 2 int 80h mov eax, 4 mov ebx, 1 mov ecx, pole mov edx, [dpoler] int 80h mov eax, [liczba1] mov ebx, [liczba2] sub eax, 48 sub ebx, 48 imul eax, ebx add eax, 48 mov [wynik], eax mov eax, 4 mov ebx, 1 mov ecx, wynik mov edx, 1 int 80h section .data liczba1 dd 0 liczba2 dd 0 pole db "Pole wynosi: " dpoler dd $ − pole wynik dd 0
24 sty 22:58
Hugo: WIDZĘ że i od asemblera jest dużo speców konkretyzując z tymi pierwiastkami potęgami to chodzi o KOOPROCESOR przykład: section .data zm1 dq 1.0 zm2 dq −5.0 zm3 dq 4.0 x db 0 a db 0 temp dd 0 section .text global start: start: finit fld qword[zm1] fld qword[zm2] fld qword[zm3] fldz fadd st0,st2 fmul st0,st2 mov dword [temp],2 fild dword [temp] fmul st4,st0 fmul st0,st4 fmul st0,st2 fsubP st1,st0 fsqrt fist dword[temp] mov al,[temp] add al,48 mov [a],al mov eax,4 mov ebx,1 mov ecx,a mov edx, 1 int 80h fldz fsub st0,st3 fadd st0,st1 fdiv st0,st4 fild dword [x] fist dword [temp] mov al,[temp] add al,48 mov [a],al
24 sty 23:00
Hugo: 1. Czy ktoś by mi mógł potłumaczyć te nazwy? Jest to program do delty 2. Pomógłby mi ktoś napisać program na bazie tych poleceń program liczący całki ma byc na kolokwium
24 sty 23:02
Stachu: sqrt inacze nie da się właściwie zrobić
24 sty 23:02
Stachu: całki jak ? numerycznie
24 sty 23:03
Hugo: Nie powiedział nam na razie jak więc chyba dowolnie. Za cokolwiek będę bardzo wdzięczny. Mógłbyś taki napisać? : )))
24 sty 23:06
Stachu: finit aktywacja zmiennoprzecinkowej jednostki fld wrzucenie liczby zmiennoprzecinkowej 64 bity na stos j.z. fldz wrzucenie 0 na stos fadd st0 st2 dodawanie w st0 masz to samo co w st2 fmull mnożenie st0 st2 wynik w st0
24 sty 23:10
Dziadek Mróz: rysunek Można całkę metodą trapezów policzyć. Dzielisz funkcję od a do z na małe trapeziki o wysokości d <<< 1 i sumujesz ich pola, kolejna podst_a staje się poprzednią podst_b a podst_b staje się podst_b + d
24 sty 23:11
Dziadek Mróz: **od a do b
24 sty 23:12
24 sty 23:12
Stachu: Dziadek Mróz : czyli numerycznie możnajeszcze metodą monte carlo ale jest to mniej wydajne i wynik wysoce niepewny emotka
24 sty 23:14
Stachu: jesteś pewny że ten program liczy delte poprawnie?
24 sty 23:21
Hugo: Dziadek Mróz: o tak teraz sobie coś przypomniałem o tym trapezie chyba jednak o tym mowil Stachu: fajny link, i co rzadkie po polsku : )) Dziadek Mróz: a miałbyś chwilkę posiedzieć jak ostatnio i to napisać ze mną ?emotka
24 sty 23:22
Hugo: Nie jestem pewny i chyba nie liczy przepisalem to na szybko bo nic nie rozumiałem
24 sty 23:23
Dziadek Mróz: W C++ tak, w asemblerze nigdy. Nie umiem tego bełkotu
24 sty 23:48
Stachu: sprawdź ten program coś mi się ze stosem nie zgadza
24 sty 23:50
Hugo: podobno Asembler jak matma język Bogów
24 sty 23:50
Hugo: nie mam jak sprawdzić, możesz mieć racje że jest źleemotka
24 sty 23:51
Stachu: Nie jest dobrze zapomniałem że liczy się od 0 emotka Tak to wygląda na stosie kolejne kolumny to następujące po sobie rozkazy 2a 2a 2a a a a b b b b 2a a b b b c c c c b b c c c b2 b2 b2 b2 c c 0 b b2 2 2 4a 4ac b2−4ac sqrt(b2−4ac )
25 sty 00:08
Stachu: rozjechało się troszkę ale ogarniesz
25 sty 00:09
Hugo: :c trudne to , i te rozkazy? w celu? to czego uczy : ))?
25 sty 00:26
Stachu: W pewnych przypadkach asembler jest przydatny a czasem nawet niezbedny natomiast 99% jest to zbedne
25 sty 00:31
Hugo: emotka
25 sty 00:34
Hugo: a mógłbyś napisać ten program do calek trapezami albo twoją metodą ?emotka
25 sty 00:35
Stachu: Niestety to nie jest takie proste najwieksza czesc problemu stanowi odpowiednie wprowadzenie funkcji i wyliczenie jej wartosci a to zalezy od tego jaka funkcje dostaniesz do calkowania
25 sty 00:41
Hugo: hehemotka
25 sty 00:54
Dziadek Mróz: Musisz rozrysować sobie stos i pilnować danych na nim się znajdujących, rozrysować sobie funkcję do obliczenia i przekazywać jej odpowiednie elementy stosu a następnie zwracać jej wynik na ten sam stos, sumować ten wynik z poprzednim wynikiem na stosie bez utraty odpowiedniej podstawy do kontynuacji obliczeń. Potrzeba kilku zmiennych dla granic a i b, sumy trapezów, podstaw a i b trapezu, pola trapezu, odstępu między trapezami i wyniku funkcji.
25 sty 13:41
Stachu: Tu masz przykład dla x2 extern scanf extern printf global main section .data floatformat: db "%f",0 intformat: db "Wartość całki dla aktualnego kroku: %d",10,0 intformat1: db "Wynik: %d",10,0 w1: db "Oblicznie calki x2 ", 10,0 w2: db "Od: ", 10,0 w3: db "Do: ", 10,0 od: times 4 db 0 ; 32 bity − 4 bajty integral: times 4 db 0 do: times 4 db 0 step: times 4 db 0 now: times 4 db 0 section .bss section .text main: mov rdi,w1 mov rax,0 call printf mov rdi,w2 mov rax,0 call printf mov edi,floatformat mov eax,0 mov esi,od call scanf mov rdi,w3 mov rax,0 call printf mov edi,floatformat mov eax,0 mov esi,do call scanf ; oblicz dx finit mov eax,1000 mov [integral],eax fild dword [integral] fld dword [od] fld dword [do] fsub st0,st1 fdiv st0,st2 fstp dword [step] ;zainicjuj petle mov eax,1000 fldz fld dword [step] fld dword [od] loop: fadd st0,st1 owiekszam x od dx fldz fadd st0,st1 ; kopiuje x fmul st0,st1 ; wyliczam x2 fmul st0,st2 ; mnoze razy dx faddp st3,st0 ; dodaje do calki ; usuwam x2*dx ze stosu fldz fadd st0,st3 ; kopiuj wartosc calki do st0 fistp dword[integral] dczyt aktualnej wartosci calki fwait ;synchronizacja z cpu push rax mov edi,intformat mov eax,0 mov esi,[integral] call printf pop rax dec eax cmp eax,0 jne loop mov edi,intformat1 mov eax,0 mov esi,[integral] call printf ret
25 sty 15:00
Stachu: Jest to metodą prostokątów troszkę prostsza w implementacji niż metoda trapezów
25 sty 15:01
Stachu: Niestety nie udało mi się zmusić asemblera do wypisania zmiennej zmiennoprzecinkowejemotka jak ktoś umie niech da znać
25 sty 15:05
Dziadek Mróz: Wysyłajcie kody na strony typu http://pastebin.com/
25 sty 15:05
Stachu: Ok dzięki za sugestie http://pastebin.com/zLKRqYjN emotka
25 sty 15:09
Trivial: Dajcie spokój z tym koprocesorem. Wszystkie niearchaiczne komputery architektury x86 od dawna obsługują SSE − nie trzeba cały czas myśleć jak wygląda stos.
25 sty 15:12
Trivial: Stachu, skorzystaj z printf do wypisania takiej liczby i po problemie. emotka Odpowiednik w C: double x = 2.5; printf("x = %lg", x);
25 sty 15:17
Stachu: Co do SSE masz rację nigdy wcześniej na nich nie pisałem ale faktycznie bd to prostsze niż walka z kooprocesorem emotka
25 sty 15:33
Stachu: Ale Hugo niestety nie ma wyboruemotka
25 sty 15:34