3.3.1.2 累加器专用传送指令
这组指令只限于使用累加器(ac:AX 或AL)传送信息。
IN ac, port ; 输入指令(input), port≤0FFH
执行操作: (AL) ← (port) 传送字节
或 (AX) ← (port+1,port) 传送字
IN ac, DX ; 输入指令, DX中的port>0FFH
执行操作: (AL) ← ((DX)) 传送字节
或 (AX) ← ((DX)+1,(DX)) 传送字
OUT port, ac ; 输出指令(output), port≤0FFH
执行操作: (port) ← (AL) 传送字节
或 (port+1,port) ← (AX) 传送字
OUT DX, ac ; 输出指令(output), DX中的 port>0FFH
执行操作: ((DX)) ← (AL) 传送字节
或 ((DX)+1,(DX)) ← (AX) 传送字
对8086及其后继机型的微处理机,所有I/O端口与CPU之间的通信都由输入输出指令IN和OUT来完成。IN指令将信息从I/O输入到CPU,OUT指令将信息从CPU输出到I/O端口,因此,IN和OUT指令都要指出I/O端口地址。微处理机分配给外部设备最多有64K个端口,其中前256个端口(0~FFH)称为固定端口,可以直接在指令中指定。当端口地址超过8位(≥256),称为可变端口,它必须先送到DX寄存器,然后再用IN或OUT指令传送信息。CPU与I/O端口传送信息的寄存器只限于累加器ac
(AX或AL),传送16位信息用AX,传送8位信息用AL,这取决于外设端口的宽度。
注意:
● 只限于在AL或AX与I/O端口之间传送信息
● 不影响标志位
XLAT ; 换码指令(translate)
执行操作: (AL) ← ((DS)×16+(BX)+(AL))
这条指令根据AL寄存器提供的位移量,将BX指示的字节表格中的代码换存在AL中。该指令还可写为:XLAT opr,opr为字节表格的首地址,因为opr所表示的偏移地址已存入BX寄存器,所以opr在换码指令中可有可无,有则可提高程序的可读性。
注意:
● 所建字节表格的长度不能超过256字节,因为存放位移量的是8位寄存器AL;
● XLAT指令不影响标志位。
|