アセンブルリスト

オプション/L を指定してアセンブルすると、アセンブルリストが作成されます。アセンブルリストを作成すると、実際に生成された機械語コードを確認でき、セグメントやラベルの要約情報も得られます。

次のコードは、付属のサンプルプログラム HELLO.ASM のアセンブルリスト例です。

アセンブルリストの例(HELLO.LST)

; Light Macro Assembler Version 2.21C       2000-01-29  10:17:15
; source file : hello.asm

    ASSUME    cs:cseg,ds:dseg,ss:sseg
cseg    SEGMENT     PARA PRIVATE
start:            ; 0000 
    mov    ax,dseg    ; 0000  B8 00-00 R
    mov    ds,ax    ; 0003  8E D8
    mov    dx,OFFSET dseg:msg    ; 0005  BA 00-00 R
    mov    ah,9h    ; 0008  B4 09
    int    21h    ; 000A  CD 21
    mov    ax,4C00h    ; 000C  B8 00 4C
    int    21h    ; 000F  CD 21
cseg    ENDS        ; 0011 
dseg    SEGMENT     BYTE PRIVATE
msg    DB    'Hello !',0Dh,0Ah,24h    ; 0000  48 65 6C 6C 6F 20 21 0D
            ; 0008  0A 24
dseg    ENDS        ; 000A 
sseg    SEGMENT     PARA STACK
    DB    100h DUP(?)    ; 0000 - 00FF
sseg    ENDS        ; 0100 
    END    start

; アセンブル結果の要約 (ソースプログラム通算 32 行)
; 1. セグメント/グループ
;       名前            種類     サイズ  アライン  コンバイン  クラス  所属
;       cseg .......... SEGMENT     11h   PARA      PRIVATE
;       dseg .......... SEGMENT      Ah   BYTE      PRIVATE
;       sseg .......... SEGMENT    100h   PARA      STACK
;
; 2. ラベル
;       名前            タイプ  セグメント  オフセット  定義命令  グローバル
;       start .........  NEAR    cseg           0h       :
;       msg ...........  BYTE    dseg           0h       db
;
; 3. マクロ : なし
;
; 以上

アセンブラコード

前半の左部分のアセンブラコードは、ソースコードそのままではなく、実際に生成された機械語コードの統一的なアセンブラ表記です。そのため、意図したとおりのコードが生成されたかどうかを確認する場合に役立ちます。

また、LASM のアセンブルリストは、それ自身アセンブラのソースコードになっており、LASM で再びアセンブルできます。

16 進コード

前半の右部分には、生成された機械語コードを示す 16 進数が出力されます。最初の 4 桁は、セグメントのファイル内先頭からのオフセットを示し、以降の 2 桁ずつの数は機械語コードを示します。

右端の「R」は、リロケート対象の存在を示します。上の例では、2 箇所の「00-00」がリロケート対象であり、アセンブル段階では実際の値が確定されません。

また、この例にはありませんが、LASM が内部でコードを生成した場合は、そのアドレスの左側に次のマークが付記されます。

+
ジャンプ命令の最適化で生成されたコード
*
.IF などの構造化ブロック文で生成されたコード
-
プロシージャ関連のコード
=
マクロおよび簡略セグメント関連のコード

アセンブル結果の要約

後半には、各種の要約情報が出力されます。

[目次]