アセンブリ言語--------- WangShuang第4章

ソースプログラムの書き込みから実行までのプロセス

ソースプログラムの書き込みから実行までのプロセスは、次の3つのステップに分かれています。

  1. アセンブリソースプログラムを書く
  2. ソースプログラムをコンパイルしてリンクする
  3. 実行
    可能ファイル内のプログラムの実行実行可能ファイル内の記述情報に従って、オペレーティングシステムは実行可能ファイル内のマシンコードとデータをメモリにロードし、関連する初期化を実行します。たとえば、実行される最初の命令を指すようにCS:IPを設定します。
    以下は、単純なアセンブリ言語のソースプログラムです。
assume cs:codesg
codesg segment
			mov ax,0123H
			mov bx,0456H
			add ax,bx
			add ax,ax
			mov ax,4c00H
			int		21H
codesg ends
end

1.疑似命令
アセンブリ言語ソースプログラムには、アセンブリ命令と疑似命令の2種類の命令があります。アセンブリ命令は、対応するマシンコードを含む命令であり、マシン命令にコンパイルして、最終的にCPUによって実行できます。疑似命令には対応するマシン命令がなく、最終的にCPUによって実行されることはありません。疑似命令は、コンパイラによって実行される命令です。コンパイラーは、疑似命令に従って関連するコンパイル作業を実行します。
上記のソースプログラムには3種類のディレクティブがあります
。XXXセグメント
XXXends

セグメントとendsは、ペアで使用される疑似命令のペアです。これは、コンパイル可能なアセンブラを作成するときに使用する必要がある疑似命令のペアです。コンパイラによる。segmentはセグメントの開始を示し、endはセグメントの終了を示します。セグメントには、次の形式を使用して、セグメントを識別するための名前が必要です。
セグメント名セグメント

セクション名は
、アセンブラが複数のセクションで構成されている場合に終了します。これらのセクションは、コード、データを格納するため、またはスタックスペースとして使用されます。コンピューターによって処理されるソースプログラムのすべての情報:命令、データ、およびスタックは、異なるセグメントに分割されます。

終わり

Endは、アセンブラの終了タグです。アセンブラのコンパイルプロセス中に、コンパイラは、疑似命令の終了に遭遇した場合、ソースプログラムのコンパイルを終了します。終わりと終わりを混同しないでください。終わりはアセンブラの終わりであり、終わりはセグメントの終わりです。

仮定する

この疑似命令の意味は架空のものです。この命令の機能を深く理解する必要はありません。特定の目的を持つセグメントを関連するセグメントレジスタに関連付けることを覚えておく必要があります。たとえば、上記のプログラムでは、codesgセグメントを使用します... codeg endsは、コードセグメントであるcodesgという名前のセグメントを定義するため、プログラムの開始時に、cs:codesgを使用してのセグメントアドレスを関連付けます。 CPU内のCSを使用したコードセグメント。

ラベル

アセンブリソースプログラムには、アセンブリ命令と疑似命令に加えて、「codesg」などのラベルがいくつかあります。ラベルは、セグメントの前にあるcodesgなどのアドレスをセグメントの名前として参照します。このセグメントの名前は、最終的には、セグメントのセグメントアドレスとしてリンカーによってコンパイルおよび処理されます。

プログラムの操作メカニズム

私たちのプログラムは、最初にアセンブリ命令の形式でソースプログラムに保存され、コンパイルおよびリンクされた後、マシンコードに変換されて実行可能ファイルに保存されます。
プログラムP2が実行可能ファイルにある場合は、実行中のプログラムP1が存在する必要があります。実行可能ファイルからメモリにP2をロードし、CPUの制御をP2に移して、P2を実行できるようにします。P2が実行を開始した後、P1は実行を一時停止し、P2が実行を終了すると、CPUの制御をプログラムP1に戻して実行できるようにする必要があります。
これで、CPUの制御を返して実行させるプログラムは、programreturnと呼ばれることがわかりましたアセンブリ言語では、次の2つの文でプログラムreturnを実装します。

mov ax,4c00H
int 21h

終わりに関連する概念

目的 関連する説明 指導の性質 コマンドエグゼキュータ
セクションの終わりをコンパイラに通知する セクション名が終了します 疑似命令 コンパイル時、コンパイラによって実行されます
プログラムの終了をコンパイラに通知します 終わり 疑似命令 コンパイル時、コンパイラによって実行されます
プログラムリターン mov ax、4c00H int 21H 組立説明 実行されると、CPUによって実行されます

アセンブラを書く

ソースプログラムを編集する

ソースプログラムは、txtテキストファイルや他のエディターを使用してソースプログラムを編集するなど、さまざまな方法で編集できます。ここでは、notepad ++を使用します。

ソースプログラムをコンパイルする

コンパイルと編集は、実際には2つの概念によく似ています。編集とは、ソースプログラムの作成であり、コンパイルとは、ソースプログラムをオブジェクトコードに変換することです。ここでは、Microsoftが提供するmasmソフトウェアを使用して、アセンブリ言語を記述し、win10で実行できます。記事の最後にURLを掲載します。必要な場合は、自分で確認できます。

リンク

ソースプログラムのコンパイル後に生成されるファイルはXXX.objであり、最終的に実行できる実行可能ファイルではないため、リンクの手順を実行する必要があります。リンクは、他のソースプログラムまたはソースプログラムで使用される他のライブラリのサブルーチンをリンクして、最終的に実行可能ファイルを生成するプロセスです。
WIN10で上記の手順を実装する方法このリンクURLを見てください:Windows10ビルドアセンブリ環境-詳細な手順

おすすめ

転載: blog.csdn.net/weixin_47617598/article/details/115016589