;=================================================== ; アセンブラチャート生成 option file ; i8086/88 series ;=================================================== ; ソース解析モードの指定 ; アセンブラソース解析方法を指定します ; モードの種類は3タイプ(混在可)です ; /mode = macro ------ 構造化マクロ解析 ; comment ---- 機能コメント解析 ; operation -- 命令語解析 ;=============================================================== ;/mode = operation ;=============================================================== ; モジュールの分割モード ; /module = mcall --- ファイル内でコールされているラベルをモジュールの ; 先頭として分割 ; = mret ---- リターン命令の後に出現するラベルがどこから ; も分岐してこないラベルならモジュールの先頭 ; と判断 ;=============================================================== /module=mcall mret ;=============================================================== ; 処理の分割方法 ; アセンブラソースを逆生成チャートの処理ボックスへどう分割するか ; を指定します ; /proc = モード ; comment --- ソース中のコメントが出現する度に1ボックス作成 ; step --- ソース中のアセンブラ1命令に対し,1ボックス作成 ; blank --- ソース中のブランクが出現する度に1ボックス作成 ; mark --- 機能コメント";++[]"で指定した範囲を ; 1ボックスとして作成 ; ;=============================================================== /proc=blank ;=============================================================== ; 分岐ラベル指定 ; 分岐ラベルの記述様式を指定します ; /label = ラベル記述様式1 ラベル記述様式2.. ; ; label1 --- ラベル名: (ラベル名:equ.. は除外) ; label2 --- ラベル名 equ * ; label3 --- ラベル名 equ $ ; label4 --- ラベル名: equ * ; label5 --- ラベル名: equ $ ; label6 --- ラベル名 (1カラム目から記述されている ; ものはラベルとみなす) ; ; デフォルトは、label1、label2、label3です ;=============================================================== /label = label1 label2 ;=============================================================== ; コード以外のセクション定義(コード部の終了) ; この定義によりコードセクションの終了をします ; /dsect=命令 オペランド.. ; 例)/dsect = sect data dumy stak ; /dsect = end ; /dsect = ends ; /dsect = dseg ; ; /dsect = .text ; ;=============================================================== /dsect = end /dsect = sect comm ;=============================================================== ; ラベル名修飾語定義 ; ラベル名修飾語定義で指定したワードは、オペランドの解析時に ; 無視されます ; /nonlabelword = 修飾語1 修飾語2.. ; ;=============================================================== /nonlabelword = type /nonlabelword = length /nonlabelword = size /nonlabelword = offset /nonlabelword = seg /nonlabelword = byte ptr /nonlabelword = tbyte ptr /nonlabelword = word ptr /nonlabelword = dword ptr /nonlabelword = qword ptr /nonlabelword = far ptr /nonlabelword = near ptr ;=============================================================== ; データ擬似命令定義(分岐ラベルの制御) ; 定数データのラベルを分岐ラベルと区別させるために定義します ; /data = 擬似命令 ; 例)/data = db ; /data = dw ; /data = ds ; /data = FLOAT ; /data = DFLOAT ; ;=============================================================== /data = db /data = dw /data = ds /data = dsb /data = dsw /data = dq /data = dd /data = dt ;=============================================================== ; グローバル疑似命令定義 ;   グローバル疑似命令を定義します ;    /global = 命令 ;=============================================================== /global=global ;=============================================================== ; 無条件ジャンプ命令の定義 ; 無条件分岐命令を定義します ; /goto = 命令 /status /delay = n ; ; nは遅延スロットの数を指定してください ;=============================================================== /goto = jmp.x /goto = jmp /goto = jmpf ;=============================================================== ; 条件ジャンプ命令の定義 ; 条件分岐命令を定義します ; /gotoc = 命令 コンディションオペランド... コンディション情報 /delay = n ; ; nは遅延スロットの数を指定してください ;=============================================================== /gotoc = ja /hi /gotoc = jnbe /hi /gotoc = jae /hs /gotoc = jnb /hs /gotoc = jb /LO /gotoc = jnae /LO /gotoc = jbe /LS /gotoc = jna /LS /gotoc = je /z /gotoc = jz /z /gotoc = jg /gt /gotoc = jnle /gt /gotoc = jge /ge /gotoc = jnl /ge /gotoc = jl /lt /gotoc = jnge /lt /gotoc = jle /le /gotoc = jng /le /gotoc = jne /ne /gotoc = jnz /ne /gotoc = jno /NV /gotoc = jnp /gotoc = jpo /gotoc = jns /PL /gotoc = jo /V /gotoc = jp /gotoc = jpe /gotoc = js /N /gotoc = ja.x /hi /gotoc = jnbe.x /hi /gotoc = jae.x /hs /gotoc = jnb.x /hs /gotoc = jb.x /LO /gotoc = jnae.x /LO /gotoc = jbe.x /LS /gotoc = jna.x /LS /gotoc = je.x /z /gotoc = jz.x /z /gotoc = jg.x /gt /gotoc = jnle.x /gt /gotoc = jge.x /ge /gotoc = jnl.x /ge /gotoc = jl.x /lt /gotoc = jnge.x /lt /gotoc = jle.x /le /gotoc = jng.x /le /gotoc = jne.x /ne /gotoc = jnz.x /ne /gotoc = jno.x /NV /gotoc = jnp.x /gotoc = jpo.x /gotoc = jns.x /PL /gotoc = jo.x /V /gotoc = jp.x /gotoc = jpe.x /gotoc = js.x /N ;=============================================================== ; コンペア条件ジャンプ命令の定義 ; コンペア分岐命令を定義します。ビット分岐命令やカウンタ ; 付き分岐命令なども定義できます。 ; /cmpgoto = 命令 コンディションオペランド ; /operand = オペランドの数 ; /true = ”真のときの条件コメント” ; /false = ”偽のときの条件コメント” ; /label = ラベルオペランド ; /delay = n ; ; nは遅延スロットの数を指定してください ;=============================================================== /cmpgoto = jcxz /true="CX==0" /false="CX!=0" /cmpgoto = jcxz.x /true="CX==0" /false="CX!=0" /cmpgoto = loop /true="CX = CX -1 / CX != 0" /false="CX = CX -1 / CX == 0" /cmpgoto = loope /true="CX = CX -1 / CX != 0 && ZF == 1" /false="CX = CX -1 / CX == 0 || ZF == 0" /cmpgoto = loopz /true="CX = CX -1 / CX != 0 && ZF == 1" /false="CX = CX -1 / CX == 0 || ZF == 0" /cmpgoto = loopne /true="CX = CX -1 / CX != 0 && ZF == 0" /false="CX = CX -1 / CX == 0 || ZF == 1" /cmpgoto = loopnz /true="CX = CX -1 / CX != 0 && ZF == 0" /false="CX = CX -1 / CX == 0 || ZF == 1" ;=============================================================== ; サブルーチンコール命令の定義 ; サブルーチンコール命令を定義します ; /call = 命令 /ststus /delay = n ; ; nは遅延スロットの数を指定してください ;=============================================================== /call = call /call = callf ;=============================================================== ; リターン命令の定義 ; リターン命令を定義します ; /return = 命令 /ststus /delay = n ; ; nは遅延スロットの数を指定してください(nは0〜9) ;=============================================================== /return = ret /return = retf /return = iret ;=============================================================== ; 演算(コンペア)命令の定義 ; 条件分岐命令の直前にある演算(コンペア)命令の定義します ; ; /comp = 命令 /rev ; ; /revを指定するとオペランド1とオペランド2の並びを逆に表示できます ;=============================================================== /comp = cmp /comp = add /comp = adc /comp = sub /comp = sbb /comp = and /comp = or /comp = xor /comp = test