05 de Julio de 2021, 10:47:37 am
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
1 Hora
1 Día
1 Semana
1 Mes
Siempre
Ingresar con nombre de usuario, contraseña y duración de la sesión
Noticias
:
Inicio
Ayuda
Buscar
Ingresar
Registrarse
Karoshi MSX Community
>
Desarrollo MSX
>
Rutinas - Snipets
>
Square root of integers
Páginas: [
1
]
« anterior
próximo »
Imprimir
Autor
Tema: Square root of integers (Leído 7841 veces)
0 Usuarios y 1 Visitante están viendo este tema.
ARTRAG
Visitante
Square root of integers
«
:
15 de Diciembre de 2008, 10:57:53 pm »
Código:
The square root of an integer is equal to the number of times an increasing odd
number can be subtracted from the original number and remain
positive. For example,
25
- 1 1
--
24
- 3 2
--
21
- 5 3
--
16
- 7 4
--
9
- 9 5 = square root of 25
--
0
Nice to keep in mind...
En línea
pitpan
Karoshi Forum's Guru
Mensajes: 1812
Re: Square root of integers
«
Respuesta #1 :
15 de Diciembre de 2008, 11:12:50 pm »
Something like this?
Código:
;---------------------
SQUARE_ROOT:
;---------------------
; Input:
; A=integer (0-255)
; Output:
; B=square root of A
; Modifies:
; AF,BC
;---------------------
ld bc,0001h
@@LOOP:
sub c
ret m
inc b
inc c
inc c
jr @@LOOP
;---------------------
(not tested, of course)
(not sure about RET M, does it mean to check C and Z?)
Ok. Updated to shorten the program 1 byte. Now it's only 10 bytes!
«
Última modificación: 16 de Diciembre de 2008, 07:00:30 am por robsy
»
En línea
ARTRAG
Visitante
Re: Square root of integers
«
Respuesta #2 :
15 de Diciembre de 2008, 11:53:46 pm »
Or something like this:
Código:
; in hl
; out a
ld de,1
ld a,d
1:
and a
sbc hl,de
ret m
inc de
inc de
inc a
jp 1b
Untested too!!
En línea
pitpan
Karoshi Forum's Guru
Mensajes: 1812
Re: Square root of integers
«
Respuesta #3 :
16 de Diciembre de 2008, 07:02:36 am »
Cool 16-bit version, AR!
Due to the elegance of this solution, it is possible even to produce such a routine to calculate the square root of a binary packed decimal number (BCD). Amazing that it could be so simple!
En línea
ARTRAG
Visitante
Re: Square root of integers
«
Respuesta #4 :
16 de Diciembre de 2008, 10:50:57 am »
The following routine (by Ricardo Bittencourt) takes 8 iterations for any 16 bit number
Código:
;Square root of 16-bit value
;In: HL = value
;Out: D = result (rounded down)
;
Sqr16: ld de,#0040
ld a,l
ld l,h
ld h,d
or a
ld b,8
Sqr16_Loop:
sbc hl,de
jr nc,Sqr16_Skip
add hl,de
Sqr16_Skip:
ccf
rl d
add a,a
adc hl,hl
add a,a
adc hl,hl
djnz Sqr16_Loop
ret
En línea
Páginas: [
1
]
Imprimir
« anterior
próximo »
Ir a:
Por favor selecciona un destino:
-----------------------------
Desarrollo MSX
-----------------------------
=> Desarrollo (EspaƱol/Spanish)
=> Development (English/Ingles)
=> Rutinas - Snipets
=> Herramientas - Dev Tools
=> Hardware
=> Enlaces - Links
=> Team-Up
-----------------------------
MSX Actualidad
-----------------------------
=> General
=> Eventos - Events
=> Concursos - Contest
=> Reviews
-----------------------------
Archivo (pre 2018)
-----------------------------
=> Karoshi Corporation
===> Karoshi Open Source
===> Videogames | Juegos
===> Unfinished projects | Proyectos inacabados
===> Applications | Aplicaciones
=> Media
=> MSXdev Archives
===> MSXdev '14
===> MSXdev '13
===> MSXdev '12
===> MSXdev '11-'03 (wip)
=> AUIC - Comunicados
=> AAMSX - General
=> English Boards
===> Off-topic
===> Contests
===> Suggest a Game
===> General Info
=> Otros
===> Sugierenos un juego
===> Compro/Cambio/Vendo/Subasto
===> Off-topic
Cargando...