Changes

ASSEMBLER ALASM JP

989 bytes added, 02:58, 7 March 2020
挿入モード:
===編集モード===
編集モードのキー:ssI-検索の継続ssQ(PCキーボードのホーム)-カーソルを0番目の列に移動しますssE(PCキーボードの終了)-カーソルを行末に移動しますssSpace-現在の行を削除します。 ポケットssW(PCキーボードのIns)に追加されます-ポケットに追加されることを意味する「マーク」行編集モードのキー:
ポケット追加フラグがオフの場合(復元後)、操作前にポケットが空になります。ssI-検索の継続ssQ(PCキーボードのHOMR):カーソルを0番目のカラムに移動します ssE(PCキーボードのEND):カーソルを行末に移動します ssSpace:現在の行を削除します。 ポケットに追加されます。 ssW(PCキーボードのIns):行が「マーク」されます。これはポケットに追加されることを意味します。ポケット追加フラグがオフの場合(復元後)、操作前にポケットが空になります。 csSP-集計またはRus :TabまたはRus / Lat(configで切り替え可能)cs1-Lat(configで切り替え可能) cs1:Rus / Latまたは集計cs2-カーソルの下にスペースを挿入(常に挿入、上書きしない)ssENTER-メインALASMシェルcs8と同じALTER(右矢印)-LatまたはTab cs2:カーソルの下にスペースを挿入(常に挿入、上書きしない) ssENTER:メインALASMシェルcs8と同じ ALTER(右矢印):前のコマンドのシンボルを記憶する
===挿入モード:===
記号が入力され、残りの単語が右に移動します。シンボルが入力され、残りのワードが右に移動します。ワードは、行に1つしかスペースがない行の一部です。 たとえば、ニーモニックを含む行にラベルを入力すると、ニーモニックは移動しません。 左矢印Wordは、行に1つしかスペースがない行の一部です。 たとえば、ニーモニックを含む行にラベルを入力すると、ニーモニックは移動しません。:カーソルは左の最初の非スペースに移動します。 右矢印:カーソルは、右側の最初の非スペースに移動するか、さらに記号がない場合は、次の集計位置。
左矢印-カーソルは左の最初の非スペースに移動します。右矢印-カーソルは、右側の最初の非スペースに移動するか、さらに記号がない場合は、次の集計位置。 すべてのモード:
・terは行を分割します。 右側に記号がない場合、Enterは、ニーモニックが通常入力される8番目の位置に移動します。 Enterは行を分割します。 右側に記号がない場合、Enterは、ニーモニックが通常入力される8番目の位置に移動します。 右側に記号があり、カーソルが8番目の位置にある場合、Enterの後も集計は保持されます。 これは、コマンドからラベルを移動するためです。
cs9(PCキーボードのDel)は、カーソルの下のシンボルを削除します。 さらに記号がない場合次の行を結合します(結果が64シンボル以下の場合)さらに記号がない場合次の行を結合します(結果が64シンボル以下の場合)
行の先頭でcs0(PCキーボードのBackSpace)を押すと-前のものに結合します。行の先頭でcs0(PCキーボードのBackSpace)を押すと前の行に結合します。
== 4.アセンブラーディレクティブ==
DEFB "jumps over",13,10,"the lazy dog",EOFsymbol
DW word[,word...]
 
DW word [,word...]
DW ALASKA,BUFFER,12,#BD15,32767,.NUMB1
DEFW 12345,34567
 
DS howmanytimes [、bytes]
DS 10,#E5
DEFS 32,#ED,#B0
 
DD [#] hexbyte [hexbytes]
DB #1D, #4F, #DC, #42, #23
 
+<something>
行サイズ=#2C ..#2Fでは使用しないでください! ディスクからテキストがロードされた後、行の先頭で「+」がスキャンされます(「-」は「+」になります)。 コンパイルはこれらの行をコンパイルし、「+」を「-」に変更して、2回目にコンパイルしないようにします。 例:
LD HL,#DB00 +SAVEADR + ORG #DB00,7 <nowiki>+ </nowiki> INCBIN "sts70r" <nowiki>+ </nowiki> ORG SAVEADR JP (HL)
STSは最初のアセンブリでのみロードされます。
label = expression
ラベルを定義または再定義します。 例:SHLUSS = 0例:
label=expression Define or re-define the label. Example: SHLUSS=0 ORG 32768 DUP#4000 DUP #4000 DEFWシュラス DEFW SHLUSS SHLUSS = SHLUSS + 1 EDUP
EDUP
#8000の後のメモリは、単語0..16384で埋められます。
反対。 254層までの条件付きコンパイル内の条件付きコンパイルが可能です。
LOCAL 
<本体>
ENDL
ローカルラベルブロック。 この構造内のすべてのラベルは、外部では見えません(@で始まるグローバルラベルを除く)。 LOCAL内のLOCALは許可されます。 ラベルがLOCALブロック内で定義されているが、このラベルが外部からアクセスされた場合、グローバルになります。
LD HL、ラベルHL,LABEL LOCALラベル LABEL ENDL
ENDL マクロ MACRO <マクロ名macro_name> <本体body> ENDM
===マクロ定義===
マクロを使用します。 パラメーターはコンマで分割されます(引用符で囲まれたコンマはカウントしません)。
マクロダウン MACRO DOWN 地元 LOCAL INC \ C LD A、A,\ C そして7 AND 7 JR NZ、LABELNZ,LABEL LD A、A,\ N \ C SUB#E0 SUB #E0 LD \ C、AC,A SBC A、AA,A および AND -8 A、 ADD A,\ R \ Cを追加C LD \ C、AC,A LABEL ENDL ラベル ENDM
ENDL
ENDM
これは、画面アドレスを現在の行よりも下の行にカウントする一般的なDOWN HLまたはDOWN DEルーチンです。 このタイプの条件の使用:
アセンブリ中にメッセージや数字を表示します。 / D、/ H、および/ Aキーは、1つの次の番号の出力形式を定義します。 キーなしの番号は現在のシステムに表示されます(configを参照)。 / D-10進数、/ H-16進数、/ A-両方のシステム。 / Lは、行リードおよびキャリッジリターンなしで、古い行に表示することを定義します。 / Tは、指定された式とその値を示します。 例:
DISPLAY "code size:size: ",/ D、endD,end-start DISPLAY / A、 A,"abc + xyz ="、abc ,abc+ xyz DISPLAY「シンプル」、「テキスト」 DISPLAY "simple"," text" DISPLAY「これは1つです」 DISPLAY "This is one " DISPLAY / L、 L,"メッセージmessage" 表示  DISPLAY /A,/ A、T,abc+xyz これは以下と同じです。  DISPLAY / T、abc A,"abc+xyz",abc+ xyzと同じです
DISPLAY / A、 "abc + xyz"、abc + xyz
アセンブリ中に指定されたルーチンを呼び出します。 すべてのポストラベルはまだ評価されていません。ALASMは#8000です。
IXおよびIY半分:HX、HY、LX、LY。 これも可能です:INF IX と IY の半分: HX,HY,LX,LY. このような例も可能です:  INF SLI OUT(C)、0 OUT (C),0 EXA EXD JZ JNZ JC JNC LD L、0、H、 L,0,H,'fnt
== 5.式==
優先順位なしで左から右に評価されます(括弧を除く)。 16ビットの符号付き/符号なし整数が使用されます。  a + b ab  a-b a * b  a / b a&b- a&b:AND  a | b-:OR a!b- a!b:XOR  a> b:"a"を"b"ビット分右にサイクリックシフトします a<b:上記と同様に左にサイクリックシフトします。 ():括弧です (最初に評価されます) {a}:"a"のメモリアドレスの内容です a~:現在の内容を反転します(-1-ワード「a」「b」ビットのサイクリックシフトa 4 a) ?label:ラベルが定義されている場合は0を、いない場合は#ffffを返します。定義されていないが、以前アクセスされていた場合は1を、ラベルがマクロである場合は2を返します。 'a:aの上位バイト .a:aの下位バイト %const:バイナリ数値 $:現在のコンパイルしているアドレス(DISP内ではシフトします) $$:現在のコンパイルしているページ + {$}}および-#BF43 make; mkace!を除くすべての操作では、ワンパスコンパイル方式により、以前に定義されていないラベルは許可されません。
ENDIF
== 6.エラー==
0構文エラー