> 請問在masm中如何求一個數如987的平方根~~~~
> 謝謝
你是問組合語言嗎?
參考我以前的程式, 不過現在大都用不著了... :(
Sqrt PROC
; 計算長整數的平方根
; 參數: DX:AX = 長整數
; 傳回: AX = 平方根
; 備註: 1. 會破壞所有暫存器值
; 2. 本程式的計算方式為傳統的移位比較計算法,採用2進位
; 方式
push bp
xor bp,bp ; BP = 傳回之平方根值
xor cx,cx ; CX:BX = 用以計算平方根目前所
xor bx,bx ; 在位置數字的值
mov si,16 ; SI=位數(16位)
Sqrtloop: mov di,2 ; 將傳入之數值移動2位進入計算
SqrtMoveBit: shl ax,1 ; 用之數值(DI=Loop Counter)
rcl dx,1
rcl bx,1
rcl cx,1
dec di
jne SqrtMoveBit
push si
shl bp,1 ; 平方根值移1位以計算下一位數字
mov si,bp ; DI:SI = 用來比較用之值
shl si,1 ; (原DI=0)
rcl di,1
or si,1
push bx
push cx
sub bx,si ; CX:BX >= DI:SI -> 該位數字=1
sbb cx,di
jc Sqrtless
pop si
pop si
or bp,1
jmp short Sqrtnext
Sqrtless: pop cx
pop bx
Sqrtnext: pop si
dec si
jne Sqrtloop
mov ax,bp
pop bp
retn
Sqrt ENDP
--
青衫詩客 - 小邱.