1 .輸入指令 in
2 .輸出指令 out
1 .輸入指令 in
輸入指令用來從指定的外設(shè)寄存器取信息送入累加器。它有四種形式:
( 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
輸出指令用來把累加器的內(nèi)容送往指定的外設(shè)存儲器,它有四種形式:
( 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) 接收或發(fā)送信息。外部設(shè)備最多可有 65536 個 i/0 端口,端口號為 0000h-ffffh 。其中前 256 個端口可以直接在指令中指定,當(dāng)端口大于等 256 時,必須先把端口號放到 dx 寄存器中,然后再用 in 或 out 來傳送信息。
例: in ax , 28h
mov da , ax
這兩條指令把端口 28 的內(nèi)容經(jīng)過 ax 傳送到存儲單元 da 中。
例: out 5 , al
這條指令從 al 寄存器輸出一個字節(jié)到端口 5.