DS
およびES
レジスタの初期化をプログラマが手動で行う必要があるのはなぜですか?
例えば:
MOV AX, DTSEG
MOV DS, AX
一方、CS
およびSS
レジスタは、オペレーティング システムによって初期化されます ( MS-DOS
)。これはなぜですか?
ユーザー定義のデータ セグメントを指すandレジスタとは対照的に、and レジスタはプログラムの実行に不可欠であるためCS
です。デフォルトでは、実行中のプログラムにはデータが存在せず、andを初期化するものは何もありません。プログラム作成者は、データ セグメント レジスタを設定することで、データの場所を指定できます。SS
DS
ES
DS
ES
編集:@FrankKotlerによって正しく指摘されたように、.com
ファイル内(プログラム全体のサイズは単一セグメントを超えません)でDS
ありES
、初期化され、CS
. 他の実行モデルの場合、DS
(実際のユーザー データへのポインターではない) へのポインターES
によって初期化されます。PSP