• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Ham Giai Phuong Trinh Bac 2
 

Ham Giai Phuong Trinh Bac 2

on

  • 7,272 views

 

Statistics

Views

Total Views
7,272
Views on SlideShare
7,188
Embed Views
84

Actions

Likes
0
Downloads
14
Comments
0

1 Embed 84

http://static.slidesharecdn.com 84

Accessibility

Upload Details

Uploaded via as Microsoft Word

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Ham Giai Phuong Trinh Bac 2 Ham Giai Phuong Trinh Bac 2 Document Transcript

    • ; Ham giai phuong trinh bac 2 ; a*x^2 + b*x + c = 0 ; duoc goi trong C: ; int quadratic( double a, double b, double c, ; double * root1, double *root2 ) ; Cac tham so: ; a, b, c – cac tham so cua phuong trinh bac 2 mot an so ; root1 – Con tro toi vi tri luu tru thu nhat ; root2 - Con tro toi vi tri luu tru thu nhat ; Gia tri tra ve: ; 1 neu phuong trin co nghiem, 0 neu phuong trinh vo nghiem %define a qword [ebp+8] %define b qword [ebp+16] %define c qword [ebp+24] %define root1 dword [ebp+32] %define root2 dword [ebp+36] %define disc qword [ebp-8] %define one_over_2a qword [ebp-16] segment .data MinusFour dw -4 segment .text global _quadratic _quadratic: push ebp mov ebp, esp sub esp, 16 ; allocate 2 doubles (disc & one_over_2a) push ebx ; must save original ebx fild word [MinusFour] ; Khoi tao gia tri -4 cho ngan xep fld a ; Ngan xep: a, -4 fld c ; Ngan xep: c, a, -4
    • fmulp st1 ; Ngan xep: a*c, -4 fmulp st1 ; Ngan xep: -4*a*c fld b ; Ngan xep: b, -4*a*c fld b ; Ngan xep: b, b, -4*a*c fmulp st1 ; Ngan xep: b*b, -4*a*c faddp st1 ; Ngan xep: b*b - 4*a*c ftst ; Kiem tra voi 0 fstsw ax sahf jb no_real_solutions ; Neu < 0, Phuong trinh vo nghiem fsqrt ; Ngan xep: sqrt(b*b - 4*a*c) fstp disc ; Lay ra cho bien disc fld1 ; Ngan xep: 1.0 fld a ; Ngan xep: a, 1.0 fscale ; Ngan xep: a * 2^(1.0) = 2*a, 1 fdivp st1 ; Ngan xep: 1/(2*a) fst one_over_2a ; Ngan xep: 1/(2*a) fld b ; Ngan xep: b, 1/(2*a) fld disc ; Ngan xep: disc, b, 1/(2*a) fsubrp st1 ; Ngan xep: disc - b, 1/(2*a) fmulp st1 ; Ngan xep: (-b + disc)/(2*a) mov ebx, root1 fstp qword [ebx] ; Lay ra cho bien *root1 fld b ; Ngan xep: b fld disc ; Ngan xep: disc, b fchs ; Ngan xep: -disc, b fsubrp st1 ; Ngan xep: -disc - b fmul one_over_2a ; Ngan xep: (-b - disc)/(2*a) mov ebx, root2 fstp qword [ebx] ; Lay ra cho *root2 mov eax, 1 ; eax=1 jmp short quit ;Tra ve gia tri 1 (xac dinh phuong trinh co nghiem)
    • no_real_solutions: ;Nguoc lai, mov eax, 0 ; tra ve gia tri 0 (phuong trinh vo nghiem) quit: pop ebx mov esp, ebp pop ebp ret