ej 1

ej 1

de Bruno Stefano Lombardo Palleiro -
Número de respuestas: 4

Buenas,

Mi duda viene mas sobre por el  lado de la instrucción MOV. Es válido hacer MOV 0x0800:[0x0100], AX ?

O tendría que hacer primero MOV DS,0X0800 y luego MOV [0x0100], AX

Saludos.

En respuesta a Bruno Stefano Lombardo Palleiro

Re: ej 1

de Federico Rivero -
Buen día!

Es casi como decís, la instrucción MOV 0x0800:[0x0100] no es válida, el segmento no se puede indicar con un inmediato, eso no es soportado por la arquitectura. Obligatoriamente se debe utilizar uno de los registros de segmento, por ejemplo DS, como sugerís.

Luego, hay una sutileza, y es que a los segmentos no se les puede asignar directamente un inmediato, eso tampoco es soportado. La forma de lograr lo que vos querés sería primero pasar el inmediato a un registro de propósito general, luego moverlo a DS, y finalmente realizar el acceso a memoria:

MOV DX, 0x8000
MOV DS, DX
MOV DS:[0x0100], AX

Una buena manera de estar seguro de que algo es válido es probarlo en el arquisim (preguntar en el foro también está bien, pero sugiero la otra opción por si demoramos en responder)

Saludos!
Federico
En respuesta a Federico Rivero

Re: ej 1

de Bruno Stefano Lombardo Palleiro -
Hola, muchas gracias por responder!
En el caso de este ejercicio, tendría que hacer PUSH DX para poder usarlo como decís? o no es la idea del ejercicio salvar lo que estaba antes en DX?
saludos