←前ページへ :  INDEX :  次の章へ→


8-4.INS,OUTS命令 ( Input from Port to String ,Output String to Port ) :ポートからストリング入出力

  7章で、ストリング命令というのを説明した。80186以上のCPUでは INOUT命令もストリング命令として、「REP」と組み合わせることができる。

【 INS? 】

INSB ( Input From Port to String Bytes ) :ポートからストリング バイト入力

INSB

   動作:DXのポートから1バイト読み出して[ES:DI]に転送し、
          DF=1の時は、DIを1減らす。
          DF=0の時は、DIを1増やす。
  影響を受けるフラグ:なし

INSW ( Input from port to String Words ) :ポートからストリング ワード入カ

INSW

   動作:DXのポートから2バイト読み出して[ES:DI]に転送し、
          DF=1の時は、DIを2減らす。
          DF=0の時は、DIを2増やす。
  影響を受けるフラグ:なし

INSD ( Input from port to String Doublewords ) :ポートからストリング ダブルワード入カ

INSD	(80386以上)

   動作:DXのポートから4バイト読み出して[ES:DI]に転送し、
          DF=1の時は、DIを4減らす。
          DF=0の時は、DIを4増やす。
  影響を受けるフラグ:なし

【 OUTS?

OUTSB ( Output String Bytes to Port ) :ポートへのストリング バイト出力

OUTSB

   動作:DXのポートへ[DS:SI]の内容1バイトを書き出して、
          DF=1の時は、DIを1減らす。
          DF=0の時は、DIを1増やす。
  影響を受けるフラグ:なし

OUTSW ( Output String Words to Port ) :ポートへのストリング ワード出力

OUTSW

   動作:DXのポートへ[DS:SI]の内容2バイトを書き出して、
          DF=1の時は、DIを2減らす。
          DF=0の時は、DIを2増やす。
  影響を受けるフラグ:なし

OUTSD ( Output String Doublewords to Port ) :ポートへのストリング ダブルワード出力

OUTSD	(80386以上)

   動作:DXのポートへ[DS:SI]の内容4バイトを書き出して、
          DF=1の時は、DIを4減らす。
          DF=0の時は、DIを4増やす。
  影響を受けるフラグ:なし

ポートからストリング入力 【186】
【書式】
 INS  {ES:}dest,DX
 dest = mem
【フラグ】
OF DF IF TF SF ZF ?? AF ?? PF ?? CF
【動作】
32ビット属性のセグメントの場合、以下のDIはEDIに、CXはECXになります。
DXで指定されるポートからES:[DI]にデータを入力します。
dest で示される ES:[DI] DXで示される port
DIをdest のサイズに従って増減します。 DFが0ならば増加し、DFが1ならば減少します。
DIDI ± dest のサイズ
【備考】
  • オペランドは省略できず、単にサイズの決定にだけ使用されます。
  • dest のサイズに従って、DXで指定されたポート(必要ならば連続したポート)から、1、2、または4バイトを入力します。
  • dest は常にES:[DI]で指定され、セグメントは変更できません。
  • 繰り返し用のプレフィックス命令が使用できます。 CXに最大転送回数を設定することでブロック転送が行なえます。

ポートへのストリング出力 【186】
【書式】
 OUTS  DX,{segreg:}source
 source = mem
【フラグ】
OF DF IF TF SF ZF ?? AF ?? PF ?? CF
【動作】
32ビット属性のセグメントの場合、以下のSIはESIに、CXはECXになります。
DS:[SI]からDXで指定されるポートにデータを出力します。
DXで示される port source で示される DS:[SI]
SIをsource のサイズに従って増減します。 DFが0ならば増加し、DFが1ならば減少します。
SISI ± source のサイズ
【備考】
  • オペランドは省略できず、単にサイズの決定にだけ使用されます。
  • source のサイズに従ってDXで指定されたポート(必要ならば連続したポート)に、1、2または4バイトを出力します。
  • オペランドが指定されていてもセグメントを変更しない場合、source のアドレスは常にDS:[SI]で指定されます。 source はセグメントの変更が可能です。
  • 繰り返し用のプレフィックス命令が使用できます。 CXに最大転送回数を設定することで、ブロック転送が行なえます。

←前ページへ :  INDEX :  次の章へ→