Makefileの修正
[YACASL2.git] / doc / casl2_spec.texi
1 input texinfo   @c -*-texinfo-*-
2 @c %**start of header
3 @ifnottex
4 @documentlanguage ja_JP
5 @end ifnottex
6 @setfilename casl2_spec
7 @documentencoding UTF-8
8 @settitle アセンブラ言語の仕様
9 @firstparagraphindent insert
10 @paragraphindent 1
11 @ifhtml
12 @exampleindent 0
13 @end ifhtml
14 @c %**end of header
15
16 @copying
17 Copyright @copyright{} Information-technology Promotion Agency, Japan. All rights reserved 2012
18 @end copying
19
20 @titlepage
21 @title アセンブラ言語の仕様
22 @subtitle 「試験で使用する情報処理用語・プログラム言語など Ver 2.2(平成24年5月22日) 別紙1」より
23 @end titlepage
24
25 @chapter システム COMET IIの仕様
26
27 @section ハードウェアの仕様
28
29 @enumerate
30 @item
31 1語は16ビットで、そのビット構成は、次のとおりである。
32
33 @verbatim
34  上位8ビット                               下位8ビット
35 | 15 | 14 | 13 | 12 | 11 | 10 |  9 |  8 |  7 |  6 |  5 |  4 |  3 |  2 |  1 |  0 |(ビット番号)
36   ↑
37 符号(負:1、非負:0)
38 @end verbatim
39
40 @item
41 主記憶の容量は65536語で、そのアドレスは0~65535番地である。
42
43 @item
44 数値は、16ビットの2進数で表現する。負数は、2の補数で表現する。
45
46 @item
47 制御方式は逐次制御で、命令語は1語長又は2語長である。
48
49 @item
50 レジスタとして、@code{GR}(16ビット)、@code{SP}(16ビット)、@code{PR}(16ビット)、@code{FR}(3ビット)の 4 種類がある。
51
52 @code{GR}(汎用レジスタ、General Register)は、@code{GR0}~@code{GR7}の8個があり、
53 算術、論理、比較、シフトなどの演算に用いる。
54 このうち、@code{GR1}~@code{GR7}のレジスタは、指標レジスタ(index register)
55 としてアドレスの修飾にも用いる。
56
57 @code{SP}(スタックポインタ、Stack Pointer)は、
58 スタックの最上段のアドレスを保持している。
59
60 @code{PR}(プログラムレジスタ、Program Register)は、
61 次に実行すべき命令語の先頭アドレスを保持している。
62
63 @code{FR}(フラグレジスタ、Flag Register)は、
64 @code{OF}(Overflow Flag)、@code{SF}(Sign Flag)、@code{ZF}(Zero Flag)と呼ぶ
65 3個のビットからなり、演算命令などの実行によって次の値が設定される。
66 これらの値は、条件付き分岐命令で参照される。
67
68 @table @code
69 @item OF
70 算術演算命令の場合は、演算結果が-32768~32767に収まらなくなったとき1になり、
71 それ以外のとき0になる。
72 論理演算命令の場合は、演算結果が0~65535に収まらなくなったとき1になり、
73 それ以外のとき0になる。
74
75 @item SF
76 演算結果の符号が負(ビット番号15が1)のとき1、それ以外のとき0になる。
77
78 @item ZF
79 演算結果が零(全部のビットが0)のとき1、それ以外のとき0になる。
80 @end table
81
82 @item
83 論理加算又は論理減算は、被演算データを符号のない数値とみなして、
84 加算又は減算する。
85 @end enumerate
86
87 @section 命令
88
89 命令の形式及びその機能を示す。
90 ここで、一つの命令コードに対し2種類のオペランドがある場合、
91 上段はレジスタ間の命令、下段はレジスタと主記憶間の命令を表す。
92
93 @enumerate
94 @item ロード、ストア、ロードアドレス命令
95 @multitable @columnfractions .25 .10 .15 .30 .20
96 @headitem 命令 @tab 書き方 @* 命令コード @tab 書き方 @* オペランド @tab 命令の説明 @tab FRの設定
97 @item ロード @* LoaD @tab @code{LD} @tab @code{r1,r2} @* ----- @* @code{r,adr[,x]} @tab @code{r1 ← (r2)} @* ----- @* @code{r ← (実効アドレス)} @tab ○ @* ただし、@code{OF}には@code{0}が設定される。
98 @item ストア @* STore @tab @code{ST} @tab @code{r,adr[,x]}  @tab @code{実効アドレス ← (r)} @tab --
99 @item ロードアドレス @* Load ADdress @tab @code{LAD} @tab @code{r,adr[,x]} @tab @code{r ← 実効アドレス} @tab --
100 @end multitable
101
102 @item 算術、論理演算命令
103 @multitable @columnfractions .25 .10 .15 .30 .20
104 @headitem 命令 @tab 書き方 @* 命令コード @tab 書き方 @* オペランド @tab 命令の説明 @tab FRの設定
105 @item 算術加算 @* ADD Arithmetic @tab @code{ADDA} @tab @code{r1,r2} @* ----- @* @code{r,adr[,x]} @tab @code{r1 ← (r1) + (r2)} @* ----- @* @code{r ← (r) + (実効アドレス)} @tab ○
106 @item 論理加算 @* ADD Logical @tab @code{ADDL} @tab @code{r1,r2} @* ----- @* @code{r,adr[,x]} @tab @code{r1 ← (r1) +L (r2)} @* ----- @* @code{r ← (r) +L (実効アドレス)} @tab ○
107 @item 算術減算 @* SUBtract Arithmetic @tab @code{SUBA} @tab @code{r1,r2} @* ----- @* @code{r,adr[,x]} @tab @code{r1 ← (r1) - (r2)} @* ----- @* @code{r ← (r) - (実効アドレス)} @tab ○
108 @item 論理減算 @* SUBtract Logical @tab @code{SUBL} @tab @code{r1,r2} @* ----- @* @code{r,adr[,x]} @tab @code{r1 ← (r1) - L(r2)} @* ----- @* @code{r ← (r) - L(実効アドレス)} @tab ○
109 @item 論理積 @* AND @tab @code{AND} @tab @code{r1,r2} @* ----- @* @code{r,adr[,x]} @tab @code{r1 ← (r1) AND (r2)} @* ----- @* @code{r ← (r) AND (実効アドレス)} @tab ○ @* ただし、@code{OF}には@code{0}が設定される。
110 @item 論理和 @* OR @tab @code{OR} @tab @code{r1,r2} @* ----- @* @code{r,adr[,x]} @tab @code{r1 ← (r1) OR (r2)} @* ----- @* @code{r ← (r) OR (実効アドレス)} @tab ○ @* ただし、@code{OF}には@code{0}が設定される。
111 @item 排他的論理和 @* eXclusive OR @tab @code{XOR} @tab @code{r1,r2} @* ----- @* @code{r,adr[,x]} @tab @code{r1 ← (r1) XOR (r2)} @* ----- @* @code{r ← (r) XOR (実効アドレス)} @tab ○ @* ただし、@code{OF}には@code{0}が設定される。
112 @end multitable
113
114 @item 比較演算命令
115 @multitable @columnfractions .25 .10 .15 .30 .20
116 @headitem 命令 @tab 書き方 @* 命令コード @tab 書き方 @* オペランド @tab 命令の説明 @tab FRの設定
117 @item 算術比較 @* ComPare Arithmetic @tab @code{CPA}@tab @code{r1,r2} @* ----- @* @code{r,adr[,x]} @tab @code{(r1)}と@code{(r2)}、又は@code{(r)}と@code{(実効アドレス)}の算術比較を行い、比較結果によって、@code{FR}に次の値を設定する。
118 @table @dfn
119 @item 比較結果
120 FRの値
121 @item @code{(r1) > (r2)} 又は @code{(r) > (実効アドレス)}
122 @code{SF:0, ZF:0}
123 @item @code{(r1) = (r2)} 又は @code{(r) = (実効アドレス)}
124 @code{SF:0, ZF:1}
125 @item @code{(r1) < (r2)} 又は @code{(r) < (実効アドレス)}
126 @code{SF:1, ZF:0}
127 @end table
128 @tab ○ @* ただし、@code{OF}には@code{0}が設定される。
129 @item 論理比較 @* ComPare Logical @tab @code{CPL} @tab @code{r1,r2} @* ----- @* @code{r,adr[,x]} @tab @code{(r1)}と@code{(r2)}、又は@code{(r)}と@code{(実効アドレス)}の論理比較を行い、比較結果によって、@code{FR}に次の値を設定する。
130 @table @dfn
131 @item 比較結果
132 FRの値
133 @item @code{(r1) > (r2)} 又は @code{(r) > (実効アドレス)}
134 @code{SF:0}, @code{ZF:0}
135 @item @code{(r1) = (r2)} 又は @code{(r) = (実効アドレス)}
136 @code{SF:0}, @code{ZF:1}
137 @item @code{(r1) < (r2)} 又は @code{(r) < (実効アドレス)}
138 @code{SF:1}, @code{ZF:0}
139 @end table
140 @tab ○ @* ただし、@code{OF}には@code{0}が設定される。
141 @end multitable
142
143 @item シフト演算命令
144 @multitable @columnfractions .25 .10 .15 .30 .20
145 @headitem 命令 @tab 書き方 @* 命令コード @tab 書き方 @* オペランド @tab 命令の説明 @tab FRの設定
146 @item 算術左シフト @* Shift Left Arithmetic @tab @code{SLA} @tab @code{r,adr[,x]} @tab 符号を除き@code{(r)}を実効アドレスで指定したビット数だけ左にシフトする。シフトの結果、空いたビット位置には、@code{0}が入る。 @tab ○ @* ただし、@code{OF}にはレジスタから最後に送り出されたビットの値が設定される。
147 @item 算術右シフト @* Shift Right Arithmetic @tab @code{SRA} @tab @code{r,adr[,x]} @tab 符号を除き@code{(r)}を実効アドレスで指定したビット数だけ右にシフトする。シフトの結果、空いたビット位置には、符号と同じものが入る。 @tab ○ @* ただし、@code{OF}にはレジスタから最後に送り出されたビットの値が設定される。
148 @item 論理左シフト @* Shift Left Logical @tab @code{SLL} @tab @code{r,adr[,x]} @tab 符号を含み@code{(r)}を実効アドレスで指定したビット数だけ左にシフトする。シフトの結果,空いたビット位置には@code{0}が入る。 @tab ○ @* ただし、@code{OF}にはレジスタから最後に送り出されたビットの値が設定される。
149 @item 論理右シフト @* Shift Right Logical @tab @code{SRL} @tab @code{r,adr[,x]} @tab 符号を含み@code{(r)}を実効アドレスで指定したビット数だけ右にシフトする。シフトの結果、空いたビット位置には@code{0}が入る。 @tab ○ @* ただし、@code{OF}にはレジスタから最後に送り出されたビットの値が設定される。
150 @end multitable
151
152 @item 分岐命令
153 @multitable @columnfractions .25 .10 .15 .30 .20
154 @headitem 命令 @tab 書き方 @* 命令コード @tab 書き方 @* オペランド @tab 命令の説明 @tab FRの設定
155 @item 正分岐 @* Jump on Plus @tab @code{JPL} @tab @code{adr[,x]} @tab @code{FR}の値によって、実効アドレスに分岐する。分岐しないときは、次の命令に進む。
156 @table @dfn
157 @item 分岐するときの@code{FR}の値
158 @code{SF:0, ZF:0}
159 @end table
160 @tab --
161 @item 負分岐 @* Jump on MINUS @tab @code{JMI} @tab @code{adr[,x]} @tab @code{FR}の値によって、実効アドレスに分岐する。分岐しないときは、次の命令に進む。
162 @table @dfn
163 @item 分岐するときの@code{FR}の値
164 @code{SF:1}
165 @end table
166 @tab --
167 @item 非零分岐 @* Jump on Non Zero @tab @code{JNZ} @tab @code{adr[,x]} @tab @code{FR}の値によって、実効アドレスに分岐する。分岐しないときは、次の命令に進む。
168 @table @dfn
169 @item 分岐するときの@code{FR}の値
170 @code{ZF:0}
171 @end table
172 @tab --
173 @item 零分岐 @* Jump on ZEro @tab @code{JZE} @tab @code{adr[,x]} @tab @code{FR}の値によって、実効アドレスに分岐する。分岐しないときは、次の命令に進む。
174 @table @dfn
175 @item 分岐するときの@code{FR}の値
176 @code{ZF:1}
177 @end table
178 @tab --
179 @item オーバーフロー分岐 @* Jump on OVerflow @tab @code{JOV} @tab @code{adr[,x]} @tab @code{FR}の値によって、実効アドレスに分岐する。分岐しないときは、次の命令に進む。
180 @table @dfn
181 @item 分岐するときの@code{FR}の値
182 @code{OF:1}
183 @end table
184 @tab --
185 @item 無条件分岐 @* unconditional Jump @tab @code{JUMP} @tab @code{adr[,x]} @tab 無条件に実効アドレスに分岐する。 @tab --
186 @end multitable
187
188 @item スタック操作命令
189 @multitable @columnfractions .25 .10 .15 .30 .20
190 @headitem 命令 @tab 書き方 @* 命令コード @tab 書き方 @* オペランド @tab 命令の説明 @tab FRの設定
191 @item プッシュ @* PUSH @tab @code{PUSH} @tab @code{adr[,x]} @tab @code{SP ← (SP)-L1}, @* @code{(SP)← (実効アドレス)} @tab --
192 @item ポップ @* POP @tab @code{POP} @tab @code{r} @tab @code{r ← ( (SP) )}, @* @code{SP ← (SP) +L 1} @tab --
193 @end multitable
194
195 @item コール、リターン命令
196 @multitable @columnfractions .25 .10 .15 .30 .20
197 @headitem 命令 @tab 書き方 @* 命令コード @tab 書き方 @* オペランド @tab 命令の説明 @tab FRの設定
198 @item コール @* CALL subroutine @tab @code{CALL} @tab @code{adr[,x]} @tab @code{SP ← (SP)-L 1}, @* @code{(SP) ← (PR)}, @* @code{PR ← 実効アドレス} @tab --
199 @item リターン @* RETrun form subroutine @tab @code{RET} @tab @tab @code{PR ← ( (SP) )}, @* @code{SP ← (SP) +L 1} @tab --
200 @end multitable
201
202 @item その他
203 @multitable @columnfractions .25 .10 .15 .30 .20
204 @headitem 命令 @tab 書き方 @* 命令コード @tab 書き方 @* オペランド @tab 命令の説明 @tab FRの設定
205 @item スーパーバイザコール @* SuperVisor CALL @tab @code{SVC} @tab @code{adr[,x]} @tab 実効アドレスを引数として割出しを行う。実行後の@code{GR}と@code{FR}は不定となる。 @tab --
206 @item ノーオペレーション @* No operation @tab @code{NOP} @tab @tab 何もしない。 @tab --
207 @end multitable
208 @end enumerate
209
210 @itemize
211 @item
212
213 @table @dfn
214 @item @code{r}, @code{r1}, @code{r2}
215 いずれも @code{GR}を示す。指定できる@code{GR}は@code{GR0}~@code{GR7}
216
217 @item @code{adr}
218 アドレスを示す。指定できる値の範囲は@code{0}~@code{65535}
219
220 @item @code{x}
221 指標レジスタとして用いる@code{GR}を示す。指定できる@code{GR}は@code{GR1}~@code{GR7}
222
223 @item @code{[ ]}
224 [ ]内の指定は省略できることを示す。
225
226 @item @code{( )}
227 ( )内のレジスタ又はアドレスに格納されている内容を示す。
228
229 @item @code{実効アドレス}
230 @code{adr}と@code{x}の内容との論理加算値又はその値が示す番地
231
232 @item @code{←}
233 演算結果を、左辺のレジスタ又はアドレスに格納することを示す。 
234
235 @item @code{+L}, @code{-L}
236 論理加算、論理減算を示す。
237
238 @item @code{FR}の設定
239 @itemize
240 @item ○: 設定されることを示す。
241 @item ー: 実行前の値が保持されることを示す。
242 @end itemize
243 @end table
244 @end itemize
245
246 @section 文字の符号表
247 @enumerate
248 @item
249 JIS X 0201 ラテン文字・片仮名用8ビット符号で規定する文字の符号表を使用する。
250
251 @item
252 次に符号表の一部を示す。1文字は8ビットからなり、上位4ビットを列で、下位4ビットを行で示す。 たとえば、間隔、4、H、\のビット構成は、16進表示で、ビット構成が 21~7E(及び表では省略しているA1~DF)に対応する文字を図形文字という。 図形文字は、表示(印刷)装置で、文字として表示(印字)できる。
253
254 @multitable @columnfractions .22 .13 .13 .13 .13 .13 .13
255 @headitem 行\列 @tab  02 @tab  03 @tab  04 @tab  05 @tab 06 @tab 07
256 @item 0 @tab 間隔 @tab 0 @tab @@ @tab P @tab ` @tab p
257 @item 1 @tab ! @tab 1 @tab A @tab Q @tab a @tab q
258 @item 2 @tab " @tab 2 @tab B @tab R @tab b @tab r
259 @item 3 @tab # @tab 3 @tab C @tab S @tab c @tab s
260 @item 4 @tab $ @tab 4 @tab D @tab T @tab d @tab t
261 @item 5 @tab % @tab 5 @tab E @tab U @tab e @tab u
262 @item 6 @tab & @tab 6 @tab F @tab V @tab f @tab v
263 @item 7 @tab ' @tab 7 @tab G @tab W @tab g @tab w
264 @item 8 @tab ( @tab 8 @tab H @tab X @tab h @tab x
265 @item 9 @tab ) @tab 9 @tab I @tab Y @tab i @tab y
266 @item 10 @tab * @tab : @tab J @tab Z @tab j @tab z
267 @item 11 @tab + @tab ; @tab K @tab [ @tab k @tab @{
268 @item 12 @tab 、 @tab < @tab L @tab \ @tab l @tab |
269 @item 13 @tab - @tab = @tab M @tab ] @tab m @tab @}
270 @item 14 @tab 。 @tab > @tab N @tab ^ @tab n @tab ~
271 @item 15 @tab / @tab ? @tab O @tab _ @tab o @tab 
272 @end multitable
273
274 @item
275 この表にない文字とそのビット構成が必要な場合は、問題中で与える。
276 @end enumerate
277
278 @chapter アセンブラ言語CASL IIの仕様
279
280 @section 言語の仕様
281
282 @enumerate
283 @item
284 CASL IIは、COMET IIのためのアセンブラ言語である。
285
286 @item
287 プログラムは、命令行および注釈行からなる。
288
289 @item
290 1命令は1命令行で記述し、次の行へ継続できない。
291
292 @item
293 命令行および注釈行は、次に示す記述の形式で、行の1文字目から記述する。
294 @multitable @columnfractions .15 .15 .70
295 @headitem 行の種類 @tab @tab 記述の形式
296 @item 命令行 @tab オペランドあり @tab [ラベル]{空白}{命令コード}{空白}{オペランド}[{空白}[{;}[コメント]]
297 @item @tab オペランドなし @tab [ラベル]{空白}{命令コード}[{空白}[{;}[コメント]]
298 @item 注釈行 @tab @tab [空白]{;}[コメント]
299 @end multitable
300
301 @itemize
302 @item 注
303 @table @dfn
304 @item [ ]
305 [ ]内の指定が省略できることを示す。
306
307 @item { }
308 { }内の指定が必須であることを示す。
309
310 @item ラベル
311 その命令の(先頭の語の)アドレスを他の命令やプログラムから参照するための名前である。 長さは1~8文字で、先頭の文字は英大文字でなければならない。 以降の文字は、英大文字又は数字のいずれでもよい。 なお、予約語であるGR0~GR7は、使用できない。
312
313 @item 空白
314 1文字以上の間隔文字の列である。
315
316 @item 命令コード
317 命令ごとに記述の形式が定義されている。
318
319 @item オペランド
320 命令ごとに記述の形式が定義されている。
321
322 @item コメント
323 覚え書きなどの任意の情報であり、処理系で許す任意の文字を書くことができる。
324 @end table
325 @end itemize
326 @end enumerate
327
328
329 @section 命令の種類
330
331  命令は、4種類のアセンブラ命令(START,END,DS,DC)、 4種類のマクロ命令(IN,OUT)および機械語命令(COMETⅡの命令)からなる。 その仕様を次に示す。
332 命令の種類 ラベル       命令コード オペランド 機能
333 アセンブラ命令   ラベル       START [実行開始番地]        プログラムの先頭を定義
334 プログラムの実行開始番地を定義
335 他のプログラムで参照する入口名を定義
336
337 END       
338 プログラムの終わりを明示
339 [ラベル] DS  語数  領域を確保
340 [ラベル] DC  定数[,定数]・・・  定数を定義
341 マクロ命令 [ラベル] IN  入力領域,入力文字長領域    入力装置から文字データを入力
342 [ラベル] OUT       出力領域,出力文字長領域    出力装置へ文字データを出力
343 [ラベル] RPUSH 
344 GRの内容をスタックに格納
345 [ラベル] RPOP    
346 スタックの内容をGRに格納
347 機械語命令 [ラベル] (「1.2 命令」を参照)
348 2.3 アセンブラ命令
349
350  アセンブラ命令は、アセンブラの制御などを行う。
351 (1)       
352 START [実行開始番地]
353  START命令は、プログラムの先頭を定義する。
354  実行開始番地は、そのプログラム内で定義されたラベルでしていする。 指定がある場合はその番地から、省略した場合はSTART命令の次の命令から、実行を開始する。
355  また、この命令につけられたラベルは、他のプログラムから入口名として参照できる。
356 (2)       
357 END       
358  END命令は、プログラムの終わりを定義する。
359 (3)       
360 DS  語数
361  DS命令は、指定した語数の領域を確保する。
362  語数は、10進定数(≧0)で指定する。語数を0とした場合、領域は確保しないが、ラベルは有効である。
363 (4)       
364 DC  定数[,定数]・・・
365  DC命令は、定数で指定したデータを(連続する)語に格納する。
366  定数には、10進定数、16進定数、文字定数、アドレス定数の4種類がある。
367 定数の種類 書き方       命令の説明
368 10進定数 n     nで指定した10進数値を、1語の2進数データとして格納する。 ただし、nが-32768~32767の範囲にないときは、その下位16ビットを格納する。
369 16進定数 #h  hは4桁の16進数(16進数字は0~9,A~F)とする。 hで指定した16進数値を1語の2進数データとして格納する(0000≦h≦FFFF)。
370 文字定数    ’文字列’ 文字列の文字数(>0)分の連続する領域を確保し、最初の文字は第1語の下位8ビットに、 2番目の文字は第2語の下位8ビットに、・・・と順次文字データとして格納する。 各語の上位8ビットには0のビットが入る。
371 文字列には、間隔および任意の図形文字を書くことができる。 ただし、アポストロフィ(’)は2個続けて書く。
372 アドレス定数      ラベル       ラベルに対応するアドレスを1語の2進数データとして格納する。
373 2.4 マクロ命令
374
375  マクロ命令は、あらかじめ定義された命令群とオペランドの情報によって、 目的の機能を果たす命令群を生成する(語数は不定)。
376 (1)       
377 IN  入力領域,入力文字長領域
378  IN命令は、あらかじめ割り当てた入力装置から、1レコードの文字データを読み込む。
379  入力領域は、256語長の作業域のラベルであり、この領域の先頭から、 1文字を1語に対応させて順次入力される。レコードの区切り符号(キーボ-ド入力の復帰符号など)は、 格納しない。格納の形式は、DC命令の文字定数と同じである。入力データが256文字に満たない場合、 入力領域の残りの部分は実行前のデータを保持する。入力データが256文字を超える場合、 以降の文字は無視される。
380  入力文字長領域は、1語長の領域のラベルであり、入力された文字の長さ(≧0)が2進数で格納される。 ファイルの終わり(end of file)を検出した場合は、-1が格納される。
381  IN命令を実行すると、GRの内容は保存されるが、FRの内容は不定となる。
382 (2)       
383 OUT       出力領域,出力文字長領域
384  OUT命令は、あらかじめ割り当てた出力装置に、文字データを、1レコードとして書き出す。
385  出力領域は、出力しようとするデータが1文字1語で格納されている領域のラベルである。 格納の形式は、DC命令の文字定数と同じであるが、 上位8ビットは、OSが無視するので0でなくてもよい。
386  出力文字長領域は、1語長の領域のラベルであり、 出力しようとする文字の長さ(≧0)を2進数で格納しておく。
387  OUT命令を実行すると、GRの内容は保存されるが、FRの内容は不定となる。
388 (3)       
389 RPUSH 
390  RPUSH命令は、GRの内容を、GR1、GR2、・・・、GR7の順でスタックに格納する。
391 (4)       
392 RPOP    
393  RPOP命令は、スタックの内容を順次取り出し、GR7、GR6、・・・、GR1の順でGRに格納する。
394 2.5 機械語命令
395
396  機械語命令のオペランドは、次の形式で記述する。
397 r,r1,r2   GRは、記号GR0~GR7で指定する。
398 x     指標レジスタとして用いるGRは、記号GR1~GR7で指定する。
399 adr       アドレスは、10進定数、16進定数、アドレス定数又はリテラルで指定する。
400 リテラルは、ひとつの10進定数、16進定数又は文字定数の前に等号(=)を付けて 記述する。CASL IIは、等号の後の定数をオペランドとするDC命令を生成し、 そのアドレスをadrの値とする。
401 2.6 その他
402
403 アセンブラによって生成される命令語や領域の相対位置は、アセンブラ言語での記述順序とする。 ただし、リテラルから生成されるDC命令は、END命令の直前にまとめて配置される。
404 生成された命令語、領域は、主記憶上で連続した領域を占める。
405
406 @bye
407