2 .输出指令 out 1 .输入指令 in
输入指令用来从指定的外设寄存器取信息送入累加器。它有四种形式:
( 1 )语句格式: in al , port
功能:( port ) → al
( 2 )语句格式: in ax , port
功能:( port ) → ax
( 3 )语句格式: in al , dx
功能:( [dx] ) → al
( 4 )语句格式: in ax , dx
功能:( [dx] ) → al
2 .输出指令 out
输出指令用来把累加器的内容送往指定的外设存储器,它有四种形式:
( 1 )语句格式: out port , al
功能:( al ) → port
( 2 )语句格式: out port , ax
功能:( ax ) → port
( 3 )语句格式: out dx , al
功能:( al ) → [dx]
( 4 )语句格式: out dx , ax
功能:( ax ) → [dx]
在 80x86 中,所有 i/0 端口与 cpu 之间的通信都由 in 和 out 指令来完成。其中 in 完成从 i/0 到 cpu 的信息传送,而 out 则完成从 cpu 到 i/0 的信息传送。 cpu 只能用累加器 (al 或 ax) 接收或发送信息。外部设备最多可有 65536 个 i/0 端口,端口号为 0000h-ffffh 。其中前 256 个端口可以直接在指令中指定,当端口大于等 256 时,必须先把端口号放到 dx 寄存器中,然后再用 in 或 out 来传送信息。
例: in ax , 28h
mov da , ax
这两条指令把端口 28 的内容经过 ax 传送到存储单元 da 中。
例: out 5 , al
这条指令从 al 寄存器输出一个字节到端口 5.
