输出指令(CPU→I/O) 长格式: OUT PORT,AL(字节) OUT PORT,AX(字) 执行操作:(PORT)<-(AL) (字节) (PORT+1,PORT)←(AX)(字) 短格式: OUT DX,AL(字节) OUT DX,AX(字) 执行操作:((DX)<-(AL) (字节) (DX)+1,(DX)←(AX)(字) 注意:*不影响标志位 *前256个端口号00H~FFH可直接在指令中指定(长格式) *如果端口号≥256,端口号→DX(短格式)
11 输出指令( CPU → I / O ) 长格式: OUT PORT , AL (字节) OUT PORT , AX (字) 执行操作: ( PORT ) ( AL ) (字节) ( PORT + 1 , PORT ) ( AX ) (字) 短格式: OUT DX , AL (字节) OUT DX , AX (字) 执行操作: ( ( DX ) ) ( AL ) (字节) ( ( DX ) + 1 , ( DX ) ) ( AX ) (字) 注意: * 不影响标志位 * 前256个端口号 00H ~ FFH 可直接在指令中指定(长格式) * 如果端口号 256,端口号→ DX(短格式)
例 N AX. 28H MOV DX. 28H N AX DX MOV DATA WORD AX 例: MOV DX,3FCH AX DX 例:OUT5,AL 例:测试某状态寄存器(端口号27H)的第2位是否为1 N AL 27H TEST AL. 00000100 B JNZ ERROR 若第2位为1,转 ERROR处理 12
12 例: IN AX , 28H ; MOV DX , 28H ; IN AX , DX MOV DATA_WORD , AX 例: MOV DX , 3FCH IN AX , DX 例: OUT 5 , AL 例:测试某状态寄存器(端口号 27H)的第 2 位是否为 1 IN AL , 27H TEST AL , 00000100 B JNZ ERROR ; 若第 2 位为 1,转 ERROR 处理
例: Sound程序 设备控制寄存器 端口6lH 1/00 2号定时器门控 控制其它外部设备 与「放大器 mov dx 100 6lh and al,11111100b sound: xor al. 2 out 61h, al mov Cx 140h wait: loop wait dec dx jne sound
13 例:Sound 程序 mov dx , 100 in al , 61h and al , 11111100 b sound:xor al , 2 out 61h , al mov cx , 140h wait1: loop wait1 dec dx jne sound 设备控制寄存器 端口 61H 1 / 0 0 控制其它外部设备 与 门 放大器 2号定时器门控 1 0