本章では、アクセス・メモリ角にいくつかのレジスタから学び続けます
メモリストレージ内の単語の3.1
高いアドレス部に格納された上位バイトの下部に格納されたワードの下位バイト:ワードの小端
3.2DS和[アドレス]
[...]記憶部であり、[...]メモリセルのオフセットアドレス0を示しています。
8086CPUデータは自動的にメモリセルのセグメントアドレスのDSを取られます
この命令は違法であるMOV DSは、1000Hよう8080CPUは、データ・セグメント・レジスタ動作、セグメントレジスタDSに直接サポートされていません。だから、どのようにDSを1000Hのだろうか?我々は、即ち、第1汎用レジスタ1000H、例えばBX、BXとDSへ、次いで内容物に、転送するレジスタを使用しなければなりませんでした。
3.3ワード伝送
3.4 MOV、ADD、SUBコマンド
3.5データセグメント
3.1から3.5の概要:
3.6スタック
スタックは、ストレージスペースにアクセスするための特別な方法です。
スタックメカニズム提供3.7CPU
プッシュとポップの8086CPUはワード単位で行われます。
重要な問題は、CPUがこのスペースを使用するスタックとして扱われ10000H〜1000FHを知っていますか?
あなたはスタックユニットのトップである単位を知る必要があり、しかし、どのようにそれを知っていますか?
どこ実行するにはどうすればCPUの命令の現在の場所を知っていますか?私たちは今、セグメント内に保存され、現在の命令のアドレスをオフセットCS、IPアドレスである答えを、知っています。質問は今ある:CPUは、スタックの最上位の場所を知っていますか?スタック・セグメントアドレスがSSに格納され、明らかに、スタックのアドレスを格納するための対応するレジスタであるべきで、8086CPU、二つのレジスタ、セグメントレジスタSS及びSPレジスタがあり、オフセットアドレスがSPに格納されています。いつでも、SS:トップへSPポイント。
プッシュ斧実行、2つの段階で行わ:(自動的に二つの工程後)
スタックの新しいトップに現在のセルの前にスタックの最上部にユニットの前面におけるスタックの現在のトップに対してSPポイント:1.SP = SP-2、SS
2.斧の内容は、SSを与え:SS、のメモリセルへSPポイント:スタックの新しいトップに、この時点でのSP。
図から、我々はスタック、上位アドレスからスタックの成長がアドレスを下げるとき、その中に、8086CPUを見ることができます。
注:の図3.12は、スタックした後、SS:スタック1000EHの新しいトップにSP点は、操作の前にトップ要素をポップ、2266H 1000年CHを持続するには、しかし、それがスタックしていません。再びプッシュスタッキング操作等を行う場合には、それが上書きされます。
3.8スタッククロスボーダーの問題
私たちは、スタックのためのいくつかのスペースを手配しますから、このようなスタック空間、これらのデータ外のコード空間のような他の用途を、持っているデータを格納することが可能であるので、境界のスタックは、危険である、コードは独自のプログラムであってもよいですそして、それは(すべての後に、コンピュータシステムが稼働して私たち自身のプログラムだけではない)別のプログラムであってもよいです。スタックをポップし、これらのデータは、誤ってコードを書き換える際に、我々は慎重ではありませんので、しかし、エラーのシリーズにつながります。
8086CPUのためのそのようなレジスタ(スタックの上限を検出することにより、CPUレジスタ、プッシュ命令のときに実行を実行するときのスーパーセクターポップ命令することを保証するために、スタックレジスタの底部によって検出されます)
言うことである。すなわち、8086CPUは、スタックは、我々はどのくらいのスタック領域の取り決めを知らない場所を知ります。
私たちは、スタックサイズを手配するために使用されるかもしれない範囲の最大スタック空間に基づいて、自分自身をプログラミングのスタックの問題を心配する必要があります。
3.9push、ポップ命令
スタックユニットの新しいトップへSPポイント、データはSSに登録:SPをSSがそのようなことを、最初の記録スタックの内容はオフセットアドレスSPレジスタが2デクリメントされ、その実行:に注意を払う必要がありますスタックポイント単位の新しいトップ。
同時に、プッシュとポップ命令はまた、(自動)SPの内容を変更します
我々は非常に押し、それをクリアして、異なるMOV命令でそれが送信される単一のステップを、CPUの命令実行のmovを指示ポップ、プッシュを行い、命令をポップが、2つのステップを必要とする必要があります。プッシュを行う場合、2つのCPUの動作を説明する。第1の変更SP、SS後:SPが渡されました。
注スタックプッシュとポップの操作コマンドが、あるSPを、変更のように、スタックの最大変動範囲が0〜FFFFHがある、ということ。
スタックは、深い理解、柔軟でなければならない非常に重要なメカニズムです。
3.10スタックセグメント
概要段落:
我々は、セグメントオフセットアドレスアクセスユニットと、セグメントを示すセグメントアドレスと、メモリセグメントのセクションとして定義することができます。これは完全に私たち自身のアレンジです。
我々は、それは次のように定義され、それがDSに取り組む、セグメントにデータを保存できる「データ・セグメント。」命令MOVを使用する場合、サブピア・アクセス・メモリ装置、我々のデータアクセスとして定義されるCPUの意志コンテンツデータセグメントを追加します。
我々が定義するように、我々はそれを「コード」、IPにおけるセグメントオフセットアドレスの最初の命令として定義されているCSセグメントアドレス、になり、コードの保存されたセグメントを使用することができ、CPUが実行されます命令コードセグメント。
我々は、スタックセグメント、SSは、それは「スタックセグメント」、スタックユニットSPのオフセットアドレスとして定義されたセグメントアドレスとして使用することができます。
メモリのセクションでは、両方のコードスペースを格納することができるだけでなく、データ・ストレージ・スペースはまた、スタック領域はまた、何もすることができないとすることができます。重要な点は、CPU設定レジスタのCSすなわち、IP、SS、SP、DS