sumar 32 a DE.

Por jrcp_kun

Paragon (1410)

Imagen del jrcp_kun

14-10-2014, 23:55

la rutina es asi?? tengo un valor en de y quiero ir sumándole 32

pop de
ld bc,32
ex hl,de
add hl,bc
ex de,hl
push de

si la meto en un bucle

ld bc,5
push bc
bucle:
pop de
ld bc,32
ex hl,de
add hl,bc
ex de,hl
push de
pop bc
jp nz,bucle

Login sesión o register para postear comentarios

Por Manel46

Hero (625)

Imagen del Manel46

15-10-2014, 00:52

Hola jrcp_kun
Deberia ser algo asi:
ld b,5
bucle:
push bc
ld bc,32
ex hl,de
add hl,bc
ex hl,de
pop bc
djnz bucle

djnz decrementa b y si no es 0 repite
se apila bc, para preservar b para el bucle.

Por jrcp_kun

Paragon (1410)

Imagen del jrcp_kun

15-10-2014, 08:11

Ya. Parece que me equivoque en los ex??

Por Manel46

Hero (625)

Imagen del Manel46

15-10-2014, 09:17

No los "ex" estaban bien. No hacían falta los " push de" y "pop de".
El contador del bucle lo ponías en bc, pero luego no lo decrementabas para salir.
Otra forma mucho mas simple:
ld b,5
ex hl,de
ld de,32
bucle:
add hl,de
djnz bucle
ex hl,de

Partiendo de un valor de "de", le sumamos 5 veces 32. El mismo registro "de" contiene el sumando dentro del bucle.
Así no hace falta apilar y desapilar nada.

Por jrcp_kun

Paragon (1410)

Imagen del jrcp_kun

15-10-2014, 18:32

si pero en el aasm me pone que add,hl,de no lo puedo sumar , si me deja hacer add hl,bc pero no hl,de

lo probare de nuevo no obstante

Por Manel46

Hero (625)

Imagen del Manel46

15-10-2014, 18:51

Debería funcionar, pues según la lista de instrucciones, se permite sumar "hl" con "bc", "de", "hl"y "sp"
No baya a ser que tengas una versión antigua del "aasm" que no conozco, actualízalo.
Yo huso "sjasm42c"

Por jrcp_kun

Paragon (1410)

Imagen del jrcp_kun

15-10-2014, 22:29

ok
a probar esa rutinilla. igual fui demasiado push pop asi a primeras xD

Por Manel46

Hero (625)

Imagen del Manel46

15-10-2014, 23:39

Aquí estamos, para lo que te haga falta...

Por jrcp_kun

Paragon (1410)

Imagen del jrcp_kun

16-10-2014, 16:20

Ya que estamos siempre que hagamos call ldirvm hayvque declarar las 3 no?? Hl de bc. Porque luego las modifica no?

Por Manel46

Hero (625)

Imagen del Manel46

16-10-2014, 16:44

Si, en "hl", la dirección de partida, en "de", la dirección de destino en la ram de video, y en "bc", la longitud del bloque.
"ldirvm" corresponde a "$5c" en la bios.

Por jrcp_kun

Paragon (1410)

Imagen del jrcp_kun

16-10-2014, 21:03

Ok gracias