Instrucciones IN e instrucciones OUT en lenguaje ensamblador
Los puertos se utilizan para el intercambio de datos entre el host y los dispositivos periféricos. (Los circuitos de interfaz de periféricos tienen registros dedicados a la interacción de datos. Para distinguirlos de los registros de la CPU, se denominan "puertos"). Hay tres tipos de puertos: puerto de datos, puerto de estado y puerto de control.
La PC asigna una dirección (llamada número de puerto) a cada puerto, formando un espacio de direcciones de E/S independiente del espacio de memoria. En 8086/8088, el rango de direcciones del puerto es de 0000 a FFFF.
Las operaciones de la CPU en los periféricos se completan mediante instrucciones especializadas de lectura y escritura de puertos. Utilice la instrucción IN para leer el puerto y utilice la instrucción OUT para escribir el puerto.
——————————————————————————————————————————
IN ACC, PORT; leer datos del puerto PORT a ACC;
PORT puede ser un número inmediato o DX.
Cuando ACC es AL, lee datos de 1 byte de PORT a AL
Cuando ACC es AX, lee datos de 2 bytes de PORT a AX
— —————————
PUERTO DE SALIDA, ACC; escribe los datos del ACC en el puerto PORT;
——————————
Ejemplo:
IN AL, 21H; significa leer un byte de datos del puerto 21H a AL
IN AX, 21H significa leer desde la dirección del puerto 21H Obtener 1 byte; de datos a AL, lea 1 byte desde la dirección del puerto 22H a AH
MOV DX, 379H
IN AL, DX lea 1 byte desde el puerto 379H a AL
——————
OUT 21H, AL; escribe el valor de AL en el puerto 21H
OUT 21H, AX escribe el valor de AX Escribe dos bytes consecutivos; a partir de la dirección del puerto 21H. (puerto[21H]=AL, puerto[22h]=AH)
MOV DX, 378H
OUT DX, AX; escriba AH y AL en los puertos 379H y 378H respectivamente
p>