• Domingo 22 de Diciembre de 2024, 07:48

Autor Tema:  Ayuda Para 8086  (Leído 1373 veces)

vir2004

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Ayuda Para 8086
« en: Miércoles 24 de Marzo de 2004, 11:29 »
0
;) Hola chic@s, necesito diseñar un procedimiento que copie datos de una zona de memoria a otra. AL procedimiento le tengo que pasar como parametros las direcciones (offset) y el tño de la transferencia. Los datos son enteros de 16 bits.

No se por donde empezar, alguien me puede ayudar?

Muchas gracias chic@s

Super_G

  • Miembro MUY activo
  • ***
  • Mensajes: 375
    • Ver Perfil
Re: Ayuda Para 8086
« Respuesta #1 en: Viernes 2 de Abril de 2004, 02:41 »
0
Primero deberias pensar en como pasar los datos esos para el procedimiento
lo mas recomendable (segun yo) seria pasarlo por PILA, empilando los datos, despues al llamar al procedimiento calcualas la pocicion de los datos en pila y los utilizas

joajavi

  • Miembro activo
  • **
  • Mensajes: 48
    • Ver Perfil
Re: Ayuda Para 8086
« Respuesta #2 en: Jueves 29 de Abril de 2004, 16:42 »
0
Pasar los datos por PILA entraña un gran problema. Tienes que reajustar el puntero de PILA para recuperarlos y después tienes que reajustarlo para recuperar la llamada del procedimiento que llamó a la subrutina en cuestión. Es muy facil que se te bloquee el programa. El programa en cuestión debe de ser el siguiente:
mov si,origen de datos
movdi, destino de datos
mov cx, tamaño
bucle:
mov al,ds:[si]
mov ds:[di],al
inc di
inc si
loop bucle
y todo el problema es este. FINAL.
En CX pasas el tamaño de la memoria a transferir. En DI el offset del desplazamiento destino y en SI el offset del origen. Dentro del bucle incrementas los dos punteros, SI y DI. La instrucción loop se ocupa automaticamente de decrementar el registro CX.
Confección de Progrqmas, Ejercicios y Prácticas en Ensamblador.
joajavi@yahoo.es