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!