home *** CD-ROM | disk | FTP | other *** search
/ PC Interdit / pc-interdit.iso / mathe / racine.asm < prev    next >
Assembly Source File  |  1994-10-04  |  2KB  |  56 lines

  1. .286                            ;active au moins les registres du 286
  2. e equ db 66h                    ;Operand Size Prefix (instructions 32 bits)
  3. w equ word ptr
  4.  
  5. code segment public
  6. assume cs:code
  7. public racine
  8. public Racfct
  9.                                 ;valeur du radicande en dx:ax
  10. racine proc pascal              ;résultat en ax (fonction)
  11. e                               ;effectue le calcul sur 32 bits
  12.   xor si,si                     ;efface esi (pour résultat intermédiaire)
  13.   db 66h,0fh,0ach,0d3h,10h      ;shrd ebx,edx,16d - dx en ebx (16 bits sup.)
  14.   mov bx,ax                     ;ax en ebx (en bas) - dx:ax est en ebx
  15. e
  16.   xor dx,dx                     ;efface edx 
  17. e
  18.   mov cx,bx                     ;sauve la valeur initiale en ecx 
  19. e
  20.   mov ax,bx                     ;charge aussi eax 
  21.  
  22. iterat:
  23. e
  24.   idiv bx                       ;divise par Xn 
  25. e
  26.   xor dx,dx                     ;reste sans intérêt
  27. e
  28.   add ax,bx                     ;additionne Xn 
  29. e
  30.   shr ax,1                      ;divise pat 2 
  31. e
  32.   sub si,ax                     ;diiférence avec le résultat précédent
  33. e
  34.   cmp si,1                      ;inférieure à 1
  35.   jbe fini                    ; c'est fini 
  36. e
  37.   mov si,ax                     ;mémorise le résultat comme résultat précédent
  38. e
  39.   mov bx,ax                     ;c'est-à-dire Xn 
  40. e
  41.   mov ax,cx                     ;valeur initiale pour division
  42.   jmp iterat                    ;retourne au début de la boucle 
  43. fini:
  44.   ret                           ;le résultat se trouve en eax
  45. racine endp
  46.  
  47. Racfct proc pascal a:dword     ;traduit la procedure en fonction Pascal
  48.   mov ax,word ptr a             ;transfère les paramètres dans registres
  49.   mov dx,word ptr a+2
  50.   call racine                   ;extrait la racine 
  51.   ret
  52. Racfct endp
  53.  
  54. code ends
  55. end
  56.