2 Assemble ../../../as/outi_call.casl (0)
4 Assemble ../../../as/outi.casl (0)
30 Assemble ../../../as/outi_call.casl (1)
31 ../../../as/outi_call.casl:1:; need outi.casl
32 ../../../as/outi_call.casl:2:MAIN START
33 ../../../as/outi_call.casl:3: LAD GR2,0
36 ../../../as/outi_call.casl:4: LD GR3,CNT
39 ../../../as/outi_call.casl:5:LOOP LD GR1,VAL,GR2
42 ../../../as/outi_call.casl:6: CALL OUTI
45 ../../../as/outi_call.casl:7: LAD GR2,1,GR2
48 ../../../as/outi_call.casl:8: CPA GR2,GR3
50 ../../../as/outi_call.casl:9: JZE FIN
53 ../../../as/outi_call.casl:10: JUMP LOOP
56 ../../../as/outi_call.casl:11:FIN RET
58 ../../../as/outi_call.casl:12: END
59 ../../../as/outi_call.casl:13:VAL DC #0000,#0001,#0002,#0010,#0100,#1000,#7FFF,#FFFF,#FFFE,#FFF0,#FF00,#F000,#8001,#8000
74 ../../../as/outi_call.casl:14:CNT DC 14
77 Assemble ../../../as/outi.casl (1)
78 ../../../as/outi.casl:1:;GR1に格納された数値を表示
79 ../../../as/outi.casl:2:OUTI START
80 ../../../as/outi.casl:3: PUSH 0,GR2
83 ../../../as/outi.casl:4: PUSH 0,GR3
86 ../../../as/outi.casl:5: PUSH 0,GR4
89 ../../../as/outi.casl:6: LAD GR0,0 ; 負数フラグ。GR1が負数の場合、GR0は1
92 ../../../as/outi.casl:7: LAD GR2,0
95 ../../../as/outi.casl:8: AND GR1,GR1
97 ../../../as/outi.casl:9: JZE INEXT ; GR1が0の場合
100 ../../../as/outi.casl:10: JPL ILOOP ; GR1が正数の場合
103 ../../../as/outi.casl:11: LAD GR0,1 ; GR1が負数の場合、負数フラグ設定
106 ../../../as/outi.casl:12: CALL INV ; 負数を正数に変換
109 ../../../as/outi.casl:13:ILOOP CPL GR1,TEN
112 ../../../as/outi.casl:14: JMI INEXT ; GR1が10未満の場合は、ループ終了
115 ../../../as/outi.casl:15: CALL DIV10 ; (GR1 / 10)の商をGR3、剰余をGR4に格納
118 ../../../as/outi.casl:16: ADDL GR4,ZCHAR ; (GR1 / 10)の剰余を文字に変換
121 ../../../as/outi.casl:17: ST GR4,STR,GR2 ; 文字をメモリに格納
124 ../../../as/outi.casl:18: LAD GR2,1,GR2 ; GR2をインクリメント
127 ../../../as/outi.casl:19: LD GR1,GR3 ; (GR1 / 10)の商をGR1に格納
129 ../../../as/outi.casl:20: JUMP ILOOP
132 ../../../as/outi.casl:21:INEXT ADDL GR1,ZCHAR ; ループ終了後の剰余を文字に変換
135 ../../../as/outi.casl:22: ST GR1,STR,GR2 ; 文字をメモリに格納
138 ../../../as/outi.casl:23: LAD GR2,1,GR2 ; GR2をインクリメント
141 ../../../as/outi.casl:24: CPL GR0,=1 ; 負数フラグ判定
145 ../../../as/outi.casl:25: JNZ PRT
148 ../../../as/outi.casl:26: LD GR1,='-' ; 負数フラグがオンの場合、「-」をロード
152 ../../../as/outi.casl:27: ST GR1,STR,GR2 ; 「-」をメモリに格納
155 ../../../as/outi.casl:28: LAD GR2,1,GR2 ; GR2をインクリメント
158 ../../../as/outi.casl:29:PRT ST GR2,LEN ; GR2をメモリに格納
161 ../../../as/outi.casl:30: LAD GR1,STR ; GR1に文字列のアドレスを格納
164 ../../../as/outi.casl:31: CALL REV ; アドレスがGR1、長さがGR2の文字列を逆順に並べ替える
167 ../../../as/outi.casl:32: OUT STR,LEN ; 文字列を印字
187 ../../../as/outi.casl:33: POP GR4
189 ../../../as/outi.casl:34: POP GR3
191 ../../../as/outi.casl:35: POP GR2
193 ../../../as/outi.casl:36: RET
195 ../../../as/outi.casl:37:TEN DC 10
197 ../../../as/outi.casl:38:ZCHAR DC '0'
199 ../../../as/outi.casl:39:STR DS 6
206 ../../../as/outi.casl:40:LEN DS 1
208 ../../../as/outi.casl:41: END
209 ../../../as/outi.casl:42:;GR1を10で割ったときの商をGR3、剰余をGR4に格納
210 ../../../as/outi.casl:43:DIV10 LD GR4,GR1 ; GR1の値をGR4にコピー
212 ../../../as/outi.casl:44: LAD GR3,0
215 ../../../as/outi.casl:45:DLOOP CPL GR4,TEN
218 ../../../as/outi.casl:46: JMI DFIN ; GR4が10未満の場合は終了
221 ../../../as/outi.casl:47: SUBL GR4,TEN ; GR4 <- GR4 - 10
224 ../../../as/outi.casl:48: LAD GR3,1,GR3 ; GR3をインクリメント
227 ../../../as/outi.casl:49: JUMP DLOOP
230 ../../../as/outi.casl:50:DFIN RET
232 ../../../as/outi.casl:51: END
233 ../../../as/outi.casl:52:;アドレスがGR1、長さがGR2の文字列を逆順に並べ替える
234 ../../../as/outi.casl:53:;例: 12345 -> 54321
235 ../../../as/outi.casl:54:REV START
236 ../../../as/outi.casl:55: PUSH 0,GR3
239 ../../../as/outi.casl:56: PUSH 0,GR4
242 ../../../as/outi.casl:57: PUSH 0,GR5
245 ../../../as/outi.casl:58: LAD GR3,1
248 ../../../as/outi.casl:59:RPU CPL GR2,GR3
250 ../../../as/outi.casl:60: JMI RNEXT
253 ../../../as/outi.casl:61: LD GR4,GR1
255 ../../../as/outi.casl:62: ADDL GR4,GR3
257 ../../../as/outi.casl:63: LD GR4,-1,GR4
260 ../../../as/outi.casl:64: PUSH 0,GR4
263 ../../../as/outi.casl:65: LAD GR3,1,GR3
266 ../../../as/outi.casl:66: JUMP RPU
269 ../../../as/outi.casl:67:RNEXT LAD GR3,1
272 ../../../as/outi.casl:68:RPO CPL GR2,GR3
274 ../../../as/outi.casl:69: JMI RFIN
277 ../../../as/outi.casl:70: POP GR4
279 ../../../as/outi.casl:71: LD GR5,GR1
281 ../../../as/outi.casl:72: ADDL GR5,GR3
283 ../../../as/outi.casl:73: ST GR4,-1,GR5
286 ../../../as/outi.casl:74: LAD GR3,1,GR3
289 ../../../as/outi.casl:75: JUMP RPO
292 ../../../as/outi.casl:76:RFIN POP GR5
294 ../../../as/outi.casl:77: POP GR4
296 ../../../as/outi.casl:78: POP GR3
298 ../../../as/outi.casl:79: RET
300 ../../../as/outi.casl:80: END
301 ../../../as/outi.casl:81:;GR1の内容をマイナス値にする
302 ../../../as/outi.casl:82:;例: 10 -> -10, -20 -> 20
303 ../../../as/outi.casl:83:INV START
304 ../../../as/outi.casl:84: XOR GR1,=#FFFF
308 ../../../as/outi.casl:85: LAD GR1,1,GR1
311 ../../../as/outi.casl:86: RET
313 ../../../as/outi.casl:87: END