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?