[Práctico 5] Ejercicio 1

[Práctico 5] Ejercicio 1

de Maria Jose Rabaza Chaves -
Número de respuestas: 0
Hola! Leí el teórico del tema y arranqué a hacer el práctico.
Es el primer ejercicio que hago de assembler 8086 y quisiera saber si vengo bien con la resolución.

Primero implementé la función copiar, les dejo un pseudocódigo:
int i = 0;
while (i <> N)
    memoria[D2+i] = memoria[D1+i]
    i++;
end while

El código assembler me quedó:

copiar PROC
    XOR SI, SI    //i=0
    PUSH SI
    PUSH BP
  while:
    CMP CX, SI     // N==i ?
    JE fin
    MOV BP, AX     //lo copio porque no se puede usar AX para acceder a memoria
    MOV AL, [BP+SI]   //memoria[D1+i]
    MOV [BX+SI], AL     //memoria[D2+i] = memoria[D1+i]
    INC SI    //i++
    JMP while
  fin:
     POP BP
     POP SI
     RET
copair ENDP

Es un primer intento. Tengo dudas sobre el uso de registros, me fui guiando por los ejemplos de las diapositivas. Tengo dudas de si están bien usados los registros. También tengo duda de si tengo que hacer PUSH de todos los registros para guardar un contexto mayor al que guarde en mi solución.

Cualquier corrección y/o sugerencia me sirve :)

Muchas gracias!

Saludos!