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