ポートのアドレス0000h〜00FFhにアクセスするときは、SRCに既値が利用できる。すべてのポート(0000h〜FFFFh)にアクセスするにはDXレジスタを使わなくてはならない。 DESTはポートのサイズ(プログラマーが調べなくてはならない)によって、レジスタのサイズを決める。IN ( Input from Port ) :ポートから入力
IN DEST,SRC 動作:SRCのI/Oポートに接続されているデバイスの状態を読み出す 影響を受けるフラグ:なし DEST:EAX(80386以上) / AX / AL SRC :即値(8bit)、DX
コンピュータの画面は左上から横に1行ずつ描画し、最後に右下に至る。そこまで来るとまた左上に戻る。これを繰り返すことで、画面が私たちに見える。 PC-9801(PC-9821)シリーズでは右下を書き終わり、左上に戻る瞬間に、A0hポートのデータ(1バイト)の6bit目が1になる。これを利用して、右下に来るまで待つプログラムを作ることができる。
なぜこんなことが必要かというと、VRAM(表示するグラフィックを格納するメモリー)に書くタイミングを計らないと、見た目がちらついてしまうため。今はそんなことは気にしなくても大丈夫。あくまでも昔の話・・・。
WAIT_SYNC: in al,0a0h test al,00100000b jne WAIT_SYNC