# Transferencia Memoria a Memoria usando DMA (programación en ensamblador)



## Adolfoe (May 17, 2008)

Hola, para un proyecto de programación en ensamblador, tengo que mover un bloque de un lugar a otra de la memoria.

Yo cree un programa que emplea las instrucciónes REP y MOVSB, para hacer la transferencia, pero creo que sería más eficiente realizarla por medio del DMA.

En los cursos de teoría ya me explicaron como configurar un DMA, pero como siempre no es lo mismo la teoría que la práctica, tengo algunas dudas que me gustaría que me aclaran
1)Viendo los dispositivos, tengo no uno sino dos DMA, cual de los dos debo usar o es indiferente?
2)El DMA que me enseñaron a configurar era uno antiguo. Los que tengo en mi PC funcionan con los mismo principios o hay algo más que debo tomar en cuenta?
3) Cualquier consejo que puedan darme para evitar conflictos con el sistema y errores que pudieran dañar la compu, se los agradeceré,


----------



## Eduardo (May 17, 2008)

Adolfoe dijo:
			
		

> ...Yo cree un programa que emplea las instrucciónes REP y MOVSB, para hacer la transferencia, pero creo que sería más eficiente realizarla por medio del DMA...


Mmmm... creo que solo era mas rapido con el 8086 (en las XT).
Segun el procesador, conviene MOVSW->MOVSD->MOVSQ con el cuidado al principio y al final del bloque cuando no es multiplo de 2-4-8 bytes ni la direccion de comienzo ni la longitud del bloque.
(precisamente lo que hace memcpy() )


----------



## Adolfoe (May 26, 2008)

Gracias por la información, me fue muy útil. Pero yo estoy trabajando en modo 8086 por exigencias del curso, por eso pense que sería mejor usar el MOVSB


----------



## Eduardo (May 26, 2008)

Adolfoe dijo:
			
		

> Gracias por la información, me fue muy útil. Pero yo estoy trabajando en modo 8086 por exigencias del curso, por eso pense que sería mejor usar el MOVSB


MOVSW  es instruccion del 8086


----------

