オプション/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 などの構造化ブロック文で生成されたコード |
- |
プロシージャ関連のコード |
= |
マクロおよび簡略セグメント関連のコード |
アセンブル結果の要約
後半には、各種の要約情報が出力されます。