Nadder:
.COMについてwikpediaページ上のファイルhttps://en.wikipedia.org/wiki/COM_fileそれが読み取ります。
DOSで.COMファイルは、このようにスタックがメモリ・セグメントの最上部から始まり、そこから下に動作し、同じ値とSP(スタックポインタ)0xFFFEというに登録するすべてのx86セグメント・レジスタを設定します。
しかし、これは実際には、セグメントのトップの下に一つの単語を開始するためにスタックを設定します。スタックに値をプッシュするときCPUは0xFFFCにSPをデクリメントし、従って、セグメントの上部ワードを浪費、そこに値を格納します。DOSではなく0にSPを設定しない理由は何ですか?
CherryDT:
CP / Mでは、あなたは、単に使用してプログラムから返すことができますret
し、あなたのプログラムが正常に終了します。これは持っていることによって達成された0x0000
スタックの最上部に、そして有するint 20h
アドレスの命令を0x0000
。にもかかわらずint 20h
、プログラムを終了するにはDOS」公式の方法で、使用してプログラムを終了するためのオプションは、call 0
CP / Mから維持し、最も外側のスコープは、ret
それが返されますので、同様に同じ動作をします0
。
その持っているために0x0000
、スタックの最上部にある単語を、あなたは明らかに、さらに下のバイト使用可能なスタック2を起動する必要があります。だからこそ、SP
当初である0xFFFE
ことを指し、0x0000
これにターンポイントのワードint 20h
命令。