10

DSおよびESレジスタの初期化をプログラマが手動で行う必要があるのはなぜですか?

例えば:

MOV AX, DTSEG
MOV DS, AX

一方、CSおよびSSレジスタは、オペレーティング システムによって初期化されます ( MS-DOS)。これはなぜですか?

4

2 に答える 2

9

ユーザー定義のデータ セグメントを指すandレジスタとは対照的に、and レジスタはプログラムの実行に不可欠であるためCSです。デフォルトでは、実行中のプログラムにはデータが存在せず、andを初期化するものは何もありません。プログラム作成者は、データ セグメント レジスタを設定することで、データの場所を指定できます。SSDSESDSES

編集:@FrankKotlerによって正しく指摘されたように、.comファイル内(プログラム全体のサイズは単一セグメントを超えません)でDSありES、初期化され、CS. 他の実行モデルの場合、DS(実際のユーザー データへのポインターではない) へのポインターESによって初期化されます。PSP

于 2012-12-01T21:20:45.843 に答える