第6章複数のセグメントを含むプログラム

WangShuangによる「AssemblyLanguageThirdEdition」------読書ノート 

6.1コードスニペットでデータを使用する

       仕様の観点から、システムはメモリスペースを割り当てる必要があります。

 

疑似アセンブリ命令(コンパイラによって認識されます)

db:バイトタイプ変数を定義します

dw:単語タイプ変数を定義します

dd:ダブルワードタイプ変数を定義します

プログラム

assume cs:code

code segment
dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h'

start: mov bx,0
       mov ax,0
  
       mov cx,8
     s:add ax,cs:[bx]
       add bx,2
       loop s

       mov 4c00h
       int 21h

code ends

end start

実行可能プログラム

説明情報と 手順     構成されてい  ます 

    記述情報:これは主に、プログラムをコンパイルおよびリンクして、ソースプログラム内の関連する疑似命令を処理することによって取得される情報です。

     プログラム:ソースプログラムからのアセンブリ命令と定義済みデータ。

 

疑似命令終了の役割

      プログラムの終了コンパイラに通知することに加えて、endは、プログラムのエントリがどこにあるかをコンパイラに通知することもできます。

      例:end startは、プログラムのエントリがラベルstartにあり、ラベルstartがアドレスであることを示します。

      コンパイルしてリンクした後、「endstart」で指定したプログラムエントリがエントリアドレスに変換されます。

       実行可能ファイルの記述情報に格納されます

    プログラムがメモリにロードされると、ローダーはプログラムの実行可能ファイルの説明情報からプログラムのエントリアドレスを読み取ります。

    CS:IPを設定する

結局のところ、フレームワークプログラムを手配することができます

assume cs:code

code segment

      ...数据...

start:

      ...代码...

code ends

end start

 

6.2コードセグメントでスタックを使用する

          第3章スタックの知識ポイントを確認します

 

6.3データ、コード、スタックを異なるセグメントに配置する

理由:

     1)同じセグメントに配置すると、プログラムが混沌としているように見えます

     2)8086モードでは、セグメントの容量は64KBのプログラムフレームを超えることはできません。


assume cs:code

data segment
   dw 0123h,0456h
data ends

stack segment
   dw 0,0,0,0
stack ends

code segment

start: 第一条命令

code ends

end start

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

おすすめ

転載: blog.csdn.net/weixin_43495262/article/details/115057334