home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC Interdit
/
pc-interdit.iso
/
mathe
/
racine.asm
< prev
next >
Wrap
Assembly Source File
|
1994-10-04
|
2KB
|
56 lines
.286 ;active au moins les registres du 286
e equ db 66h ;Operand Size Prefix (instructions 32 bits)
w equ word ptr
code segment public
assume cs:code
public racine
public Racfct
;valeur du radicande en dx:ax
racine proc pascal ;résultat en ax (fonction)
e ;effectue le calcul sur 32 bits
xor si,si ;efface esi (pour résultat intermédiaire)
db 66h,0fh,0ach,0d3h,10h ;shrd ebx,edx,16d - dx en ebx (16 bits sup.)
mov bx,ax ;ax en ebx (en bas) - dx:ax est en ebx
e
xor dx,dx ;efface edx
e
mov cx,bx ;sauve la valeur initiale en ecx
e
mov ax,bx ;charge aussi eax
iterat:
e
idiv bx ;divise par Xn
e
xor dx,dx ;reste sans intérêt
e
add ax,bx ;additionne Xn
e
shr ax,1 ;divise pat 2
e
sub si,ax ;diiférence avec le résultat précédent
e
cmp si,1 ;inférieure à 1
jbe fini ; c'est fini
e
mov si,ax ;mémorise le résultat comme résultat précédent
e
mov bx,ax ;c'est-à-dire Xn
e
mov ax,cx ;valeur initiale pour division
jmp iterat ;retourne au début de la boucle
fini:
ret ;le résultat se trouve en eax
racine endp
Racfct proc pascal a:dword ;traduit la procedure en fonction Pascal
mov ax,word ptr a ;transfère les paramètres dans registres
mov dx,word ptr a+2
call racine ;extrait la racine
ret
Racfct endp
code ends
end