A alternativa correta deve apresentar uma instrução que transfere dados diretamente entrer um endereço de memória e uma porta I/O do dispositivo, sem utilizar um registrador de uso geral. Apesar da arquiterura x86 ser registrador-memória, busca-se uma instrução com operandos de memória, lembrando que em x 86 portas I/O são mapeadas em memória.
A) LEA: Em inglês, load effective address. A função deste instrução é escrever o endereço de uma variável fonte em um registrador de destino. Assemelha-se ao operador unário & da linguagem C+, como uma instrução para lidar com ponteiros.
B) OUT: Para a comunicação com dispositivos externos, o comando de saída é usado para o envio de informações a uma prota. OUT copia um byte ou word do acumulador para uma porta especificada. Quase atende o solicitado no enunciado, porém um dos operadores, neste caso, tem que ser um acumulador, onde já se encontre informação acessada da memória.
C) INSB: INS/INSB/INSW são versões mais avançadas das instruções IN e OUT. INSB registra uma string presente em uma porta E/S especificada no argumento da função e armazena-o em um endereço de memória também fornecido na chamada da função.
D) MOVSX: Em inglês, move sign-extends. Junto com a operação a MOVZX, é útil quando um valor presente em um registrador de 8 bits for movido para outro de 16 bits. No caso de MOVSZ, o bit de sinal destes valor é considerado e os 8 bits superiores que faltam são preenchidos de acordo no registrador de 16 bits.
E) MOVSW: A operação MOVS move valores entre endereços de memória. Sua variante MOVSW move uma word. Apesar da semelhança com a função solicitada no enunciado, instruções do tipo MOV não são a resposta correta do exercício, pois a arquitetura demanda operações específicas para acessar as portas E/S.
Resp: C