第14章ポート
CPUは、読み取りおよび書き込みデータを直接置くことができます。
- 内部CPUレジスタ
- メモリユニット
- ポート
14.1ポートの読み取りと書き込み
ら、16ビットの書き込みポート、斧で格納されるデータ格納されたデータに8ビットの書き込みポート
場合は0内の255ポートを読み書きします
アル、20H うち、アルを20Hを
読みとポートに65535から256を書き込むと、ポート番号はDXを保存する必要があります
MOV DX、3F8H でアル、DX アウト DX、アル
14.2 CMOS RAM
70Hアドレスポート:CMOS RAM部に格納されたアドレスにアクセスするには
データポート71H:選択したセルCMOS EAMから読み出されたデータを保存します
(1)
コード:CS仮定 コード・セグメントの 開始: MOVら、2 アウト70H、文献 においてら、71Hの MOV斧、4c00hの int型21Hの コードが終了する 終了開始
(2)
コード:CS仮定 コード・セグメントの 開始: MOVら、2 アウト70H、アル MOVのAl、0 アウト71Hは、アル MOV斧、4c00hの int型21Hの コードが終了する 終了開始
14.3 SHLとSHR命令
論理シフト命令SHLを残しました
論理右シフト命令SHR
特徴:
- 左データレジスタまたはメモリユニット/右シフト
- CFで書かれた最後のビットの除去
- 最下位ビット/ MSBが0に追いつきます
あなたは、CLレジスタを維持するために必要で一回以上を移動したい場合
チェックポイント14.2
コード:CS仮定 コード・セグメントの 開始: MOV AXを、66 のMOV BX、AX SHL斧、1つの MOVのCL、3 SHLのBXは、CL 斧を追加し、BXの MOV斧、4c00hの int型21Hの コードが終了する 終了開始
14.4 CMOS RAMに保存された時刻情報
現在の時刻を格納することであって、長さは1バイト、ストレージユニット、年、月、日、時、分、秒であります
S:0:2:4
日:7月:8年:9
実験14 CMOS RAMへのアクセス
CSを想定:コード データセグメント DB 。9、8、7、4、2、0 データが終了 コードセグメント スタート: MOVのAXを、データ MOV DS、AX MOV BX、0b800h MOV ES、BX MOV DIは、160 * 12は、 + 33である * 2 SiのMOV、0 MOV CX、6。 S: ショーコール のCMP バイト PTR DS:[シリコン]、7 JNA S1を、大きくないジャンプ7より 、年、月の MOVのバイト PTR ES:[DI]、' / ' JMP STOP S1: JB S2は、7未満のジャンプ ;日の MOVのバイト PTR ES:[DI]、' ' JMP STOP S2: CMPのバイト PTR DS:[シリコン]、0 JE STOP 0に等しいジャンプ ;時間、分の MOVのバイト PTR ES:[DI]、' :' STOP: 株式会社は、Siである DIを追加し、2 ループS MOV AX、4c00hの int型21Hの 表示: プッシュCX MOVアル、DS:[シリコン] OUT 70H、アル 中アル、71Hの ;データを取得 楽章AH、アル CL MOV、4 SHR AH、CL 及びAl、00001111b ;進ASCIIに 30H、AHを追加 、アル追加30Hを 、表示バッファは、書き込み [DI]、AHの:MOV ES MOVのバイト PTR ES:[DI + 2 ]、Alから DI、追加。4 POPのCXの RETの コードは終了 終了スタート
第15章外部割込み
15.1インターフェースチップとポート
入力周辺機器やメモリはCPUに直接供給されていないが、第一の給電ポートは、CPUが直接周辺出力周辺装置に入力されていないが、第一のポートに、そして次に関連する周辺チップによって送られました、CPUは、周辺への出力情報を制御することができ、及び制御コマンドは、次いで、関連する周辺機器制御チップによってコマンドに応じたその後の実施形態では、チップの関連するポートに送られます。
ポートと外部デバイスを通して見える、CPU接触。
15.2外部割込み情報
外部割り込みソースはに分かれています。
- マスク可能な割り込み:外部CPUが割り込みに応答しないことがあります。= 0の場合配置CLI; STI、IF = 1を配置
- マスク不能割り込み:CPUの必須の外部割り込み。2割り込み種別コードに固定されています。
15.3 PCキーボード加工機
1.キーボード入力
キーが押されたときに発生する一般的なスキャンコード、パスコードと呼ばれる解除キースキャンコードは、コードがオフと呼ばれて生成された、スキャンコードバイトの長さは、7ビットコードを0、ビット7壊れたコードであります1、即ち:壊れたコード= + 80Hを介してコード
2. 9を中断トリガ
キーボード入力ポート60Hが到着すると、関連するチップの種類はCPU 9コードマスク可能な割り込み情報に割り込みを送信します。IF = 1、割り込み応答、そうでなければマスク可能な割り込みCPU場合は、情報を検出します。
3.実行(Do)INT9割り込みルーチン
これはBIOSのキーボードバッファシステムが起動した後、保存するBIOSがint 9キーボード入力履歴記憶領域が受信される中断のために。メモリ領域15は、キーボード入力を格納するint型9を割り込みルーチンとして加えて、スキャンコードを受信するだけでなく、対応するASCIIコードを生成することができ、したがって、バッファ内に、キーボード入力が一つの単語を格納する手段と、スキャンコードのビット下の文字コード。
CF-ビットのフラグレジスタ以外のINCとDEC影響
15.4割り込みルーチン書かINT9
次の手順をシミュレートします:
- フラグレジスタ・スタック。
- = 0の場合、TF = 0。
- CS、IPスタック
- (IP)=(DS)* 16 + 0;(CS)=(DS)* 16 + 2
図3及び図4は、呼のDWORD PTR DSとして簡略化することができる:[0]
注意:
- そうでない場合はリターン、バックベクタテーブルのint 9で元のアドレスへの割り込みルーチンのエントリアドレスの前にプログラムに戻るには、他のプログラムは、キーボードを使用することはできません。
- 割り込みコードは、割り込みコードが決定されたプログラムのエントリアドレスを決定するために取られ、それは、INT命令を呼び出すことはできません。
ASSUME CS:コード・ スタック・セグメント DB 128 DUP(0 ) スタックは終了 データセグメント DW 0、0 データが終了 コードセグメント スタート: ;スタックセグメントアドレス のMOV AX、スタック MOV SS、AX MOV SP、128 、データセグメントアドレス MOV斧、データを MOV DS、AX 、元番号9の割り込みはDSにベクタテーブル内のエントリのアドレスを保存する:[ 0 ]、DS [ 2 ] のMOV AX、0 MOV ESを、AXの プッシュES:[ 9 * 4 ] POPのDS:[ 0 ] ESを押して[9 * 4 + 2 ] POPのDS:[ 2 ] ; INT9は、新しい割り込みルーチンのエントリ・アドレス設け MOVワードPTR ES:[する。9 * 4 ]、INT9オフセット MOV ES:[する9。 * 4 + 2 ]、CS 、表示バッファ内に配置されました領域 のMOV AX、0b800h MOV ES、AX MOV DI、160 * 12は + 40 * 2 MOV AH、' ' S: ;文字表示 MOVのES:[DI]、AH コール遅延 incがAHであり 、CMP AH ' Z ' S JNA 、INT9は、元のエントリアドレス復元する割り込みルーチン のMOV AX、0 MOV ESを、AXは DSプッシュ:[ 0 ] POPのES:[する9。 * 4 ] DSプッシュ:[ 2 ] POPのES:[する9。 * 4 + 2 ] MOV AX、4c00hの int型21H ;遅延 遅延: プッシュDXの プッシュAX ; 10 0000Hは、高および低アドレス書き込み MOV DX、10Hの MOV AXを、0 S1を: ;のみサブを使用しない12月に サブAX、1。 SBB DX、0 DX CMP、0 JNE S1 CMP AX、0 JNE S1 ポップAXの ポップDXの RET ;新しい割り込みルーチン INT9: プッシュAXの プッシュBX ESを押して 、キーボードの入力ポート60Hから読ん でアル、60Hの PUSHFの PUSHF ;抽出フラグレジスタ ポップBX ; IF = 0、TF = 0 とBH、11111100b 、フラグレジスタ保存 プッシュBX POPFを DWORD PTR DSを呼び出す:[ 0 ];シミュレーションのINT命令、元のコールINT9は割り込みルーチン、他の処理ハードウェアの詳細は 、文献をcmpの1 ;分析は、ESCを押した JNEをint9ret AXのMOVは、0b800h MOV ES、AXの incがあるバイト PTR ES:[DI + 1 ];属性値が+1し int9ret: POP ES POP BX POP AX IRETの コードが終了する 終了スタート