32-bit
можно и посмотреть: Вложение 57758Код:;=======================================================================
; BC = SQRT(DEHL)
;-----------------------------------------------------------------------
sqrt32:
;-----------------------------------------------------------------------
mvi a,30 + 2
push psw ; s+2
lxi b, 0 ; y
push d ; xh
push h ; xl
;-----------------------------------------------------------------------
.loop:
pop h
pop d
pop psw
sui 2 ; a=s
rm
;-----------------------------------------------------------------------
push psw
push d
push h
mov l,c
mov h,b
dad h
mov c,l
mov b,h ; BC=y=2*y
;-----------------------------------------------------------------------
lxi d,0
dad h
inx h ; DEHL=b=2*y+1
;-----------------------------------------------------------------------
inr a
.shift:
dcr a
jz .skip
xchg
dad h
jc .loop
xchg
dad h
jnc .shift
inx d
jmp .shift
.skip: ; DEHL << A=s
;-----------------------------------------------------------------------
push d
push h
lxi h,4
dad sp
xchg ; DE --> X
lxi h,0
dad sp ; HL --> B
;-----------------------------------------------------------------------
ldax d
sub m
mov m,a
inx h
inx d
ldax d
sbb m
mov m,a
inx h
inx d
ldax d
sbb m
mov m,a
inx h
inx d
ldax d
sbb m
mov m,a
;-----------------------------------------------------------------------
pop h
pop d
jc .loop
;-----------------------------------------------------------------------
xthl
pop h
xchg
xthl
push d
inx b
jmp .loop
;=======================================================================

