Tamaño de lectura desde un Puerto, 1 o 2 bytes?

Tamaño de lectura desde un Puerto, 1 o 2 bytes?

de Juan Ignacio Sanchez Sampayo -
Número de respuestas: 1

Buenas, en el taller nos explicaron que cuando leemos de un puerto, la lectura se realiza de a 2 elementos.

Es decir, que el primer "IN" coloca en algún registro destino, el tamaño de la matriz en la parte alta y 0xff en la parte baja.


Si embargo en la práctica esto no sucede así.

Cada "IN" obtiene solo un elemento de los que le pasamos por el puerto y lo coloca en la parte baja del registro destino.

.code
xor ax, ax
; leo datos del puerto
mov dx, 200
in ax, dx ; tamaño matriz (n)
mov es:[bx], ax

.ports

200: 3, 0xFF, 1, 0xFF, 0, 0xFF, 3, .......


esto guarda en "es:[bx]" el valor 0x000n y no 0x0nFF.


Que criterio seguimos? puede ser un bug del simulador o que es lo que no estoy viendo?

En respuesta a Juan Ignacio Sanchez Sampayo

Re: Tamaño de lectura desde un Puerto, 1 o 2 bytes?

de Guillermo Amorin -

Estimado, lo que te deben de haber indicado en el taller es que en la sección ports cunado se trabaja con el arquisim los números pueden ser de 16 bits.

Consultando los materiales teóricos del curso, puedes encontrar que en la instrucción IN se debe especificar el tamaño del puerto donde se desea leer, utilizando AX o AL para 16 u 8 bits respectivamente.

Respecto a lo que tu ves, es correcto ese funcionamiento. Si quieres para aclarar dudas puedes vichar el manual de usuario del Arquisim.

Saludos