学習のコンパイル - 16日

第14章ポート

CPUは、読み取りおよび書き込みデータを直接置くことができます。

  1. 内部CPUレジスタ
  2. メモリユニット
  3. ポート

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

 

特徴:

  1. 左データレジスタまたはメモリユニット/右シフト
  2. CFで書かれた最後のビットの除去
  3. 最下位ビット/ 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 。987420 
データが終了
コードセグメント
スタート:
    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

次の手順をシミュレートします:

  1. フラグレジスタ・スタック。
  2. = 0の場合、TF = 0。
  3. CS、IPスタック
  4. (IP)=(DS)* 16 + 0;(CS)=(DS)* 16 + 2

図3及び図4は、呼のDWORD PTR DSとして簡略化することができる:[0]

注意:

  1. そうでない場合はリターン、バックベクタテーブルのint 9で元のアドレスへの割り込みルーチンのエントリアドレスの前にプログラムに戻るには、他のプログラムは、キーボードを使用することはできません。
  2. 割り込みコードは、割り込みコードが決定されたプログラムのエントリアドレスを決定するために取られ、それは、INT命令を呼び出すことはできません。
ASSUME CS:コード・
スタック・セグメント
    DB 128 DUP(0 
スタックは終了
データセグメント
    DW 00 
データが終了
コードセグメント
スタート:
    ;スタックセグメントアドレス
    の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の
    
コードが終了する
終了スタート

 

おすすめ

転載: www.cnblogs.com/Mayfly-nymph/p/11228966.html