1 \ ASSEMBLER TEST PROGRAM
\r
3 CHAR " PARSE CPU" ENVIRONMENT? DROP
\r
4 CHAR " PARSE 8086" COMPARE
\r
5 [IF] CR .( This assembler is for 8086 only.) ABORT [THEN]
\r
11 VARIABLE TEST-POINTER
\r
14 CREATE , , DOES> 2@ ;
\r
17 xhere TEST-POINTER ! ;
\r
19 CHAR " PARSE model" ENVIRONMENT? DROP
\r
20 CHAR " PARSE ROM Model" COMPARE 0=
\r
21 CHAR " PARSE model" ENVIRONMENT? DROP
\r
22 CHAR " PARSE RAM Model" COMPARE 0= OR
\r
24 : ZZ ( N1 ... NN -- )
\r
26 BEGIN ( n ... n addr)
\r
29 TEST-POINTER @ 10 DUMP
\r
33 TEST-POINTER @ = UNTIL
\r
37 CHAR " PARSE model" ENVIRONMENT? DROP
\r
38 CHAR " PARSE EXE Model" COMPARE 0=
\r
40 : ZZ ( N1 ... NN -- )
\r
42 BEGIN ( n ... n addr)
\r
45 TEST-POINTER @ 10 DUMP
\r
49 TEST-POINTER @ = UNTIL
\r
54 \ ---------- all is in hex from here to end
\r
70 9876 5432 2CONSTANT FARSUB
\r
82 0 [BX+SI] CX ADC, 13 08 ZZ
\r
83 CX 0 [BX+SI] ADC, 11 08 ZZ
\r
84 3456 # WVAR ) ADC, 81 16 35 12 56 34 ZZ
\r
85 5 # AX ADC, 15 05 00 ZZ
\r
90 ES: 967 [BX+DI] BP ADD, 26 03 A9 67 09 ZZ
\r
91 AX 967 [BX+DI] ADD, 01 81 67 09 ZZ
\r
92 AX 0 [BX+DI] ADD, 01 01 ZZ
\r
93 6789 # SI ADD, 81 C6 89 67 ZZ
\r
94 5432 # WVAR ) WORD ADD, 81 06 35 12 32 54 ZZ
\r
95 5 # AX ADD, 05 05 00 ZZ
\r
97 DS: 1234 [BP+SI] BL AND, 3E 22 9A 34 12 ZZ
\r
98 BP CS: 4567 [BP+SI] AND, 2E 21 AA 67 45 ZZ
\r
99 BP 0 [BP+SI] AND, 21 2A ZZ
\r
100 6789 # BX AND, 81 E3 89 67 ZZ
\r
101 1234 # WVAR ) WORD AND, 81 26 35 12 34 12 ZZ
\r
102 5 # AL AND, 24 05 ZZ
\r
106 xhere 48 - # CALL, E8 B5 FF ZZ
\r
107 FARSUB # FAR CALL, 9A 76 98 32 54 ZZ
\r
108 WVAR [BP+DI] CALL, FF 93 35 12 ZZ
\r
109 0 [BP+DI] CALL, FF 13 ZZ
\r
111 LVAR ) FAR CALL, FF 1E 37 12 ZZ
\r
121 67 # CH CMP, 82 FD 67 ZZ
\r
122 AH BH CMP, 38 E7 ZZ
\r
123 0 [SI] CL CMP, 3A 0C ZZ
\r
124 SS: AL 0 [SI] CMP, 36 38 04 ZZ
\r
125 9678 # WVAR ) WORD CMP, 81 3E 35 12 78 96 ZZ
\r
126 5432 # AX CMP, 3D 32 54 ZZ
\r
140 BVAR [SI] BYTE DEC, FE 8C 34 12 ZZ
\r
141 WVAR [DI] WORD DEC, FF 8D 35 12 ZZ
\r
142 0 [SI] WORD DEC, FF 0C ZZ
\r
146 BVAR ) BYTE DIV, F6 36 34 12 ZZ
\r
153 BVAR ) BYTE IDIV, F6 3E 34 12 ZZ
\r
157 BVAR ) BYTE IMUL, F6 2E 34 12 ZZ
\r
159 7B # AL IN, E4 7B ZZ
\r
160 7B # AX IN, E5 7B ZZ
\r
168 5 [SI] BYTE INC, FE 44 05 ZZ
\r
169 0 [BP] WORD INC, FF 46 00 ZZ
\r
180 xhere 3 + JA, 77 01 ZZ
\r
181 xhere 4 - JA, 77 FA ZZ
\r
183 xhere 3 + JAE, 73 01 ZZ
\r
184 xhere 4 - JNC, 73 FA ZZ
\r
186 xhere 3 + JB, 72 01 ZZ
\r
187 xhere 4 - JC, 72 FA ZZ
\r
189 xhere 3 + JBE, 76 01 ZZ
\r
190 xhere 4 - JBE, 76 FA ZZ
\r
194 xhere 3 + JCXZ, E3 01 ZZ
\r
196 xhere 3 + JE, 74 01 ZZ
\r
197 xhere 4 - JZ, 74 FA ZZ
\r
199 xhere 3 + JG, 7F 01 ZZ
\r
200 xhere 4 - JG, 7F FA ZZ
\r
202 xhere 3 + JGE, 7D 01 ZZ
\r
203 xhere 4 - JGE, 7D FA ZZ
\r
207 xhere 3 + JL, 7C 01 ZZ
\r
208 xhere 4 - JL, 7C FA ZZ
\r
210 xhere 3 + JLE, 7E 01 ZZ
\r
211 xhere 4 - JLE, 7E FA ZZ
\r
213 xhere 7 + JU, EB 05 ZZ
\r
215 xhere 1234 + # JMP, E9 31 12 ZZ
\r
216 FARSUB # FAR JMP, EA 76 98 32 54 ZZ
\r
217 WVAR ) JMP, FF 26 35 12 ZZ
\r
219 LVAR [SI] FAR JMP, FF AC 37 12 ZZ
\r
220 0 [SI] FAR JMP, FF 2C ZZ
\r
224 xhere 3 + JNE, 75 01 ZZ
\r
225 xhere 4 - JNZ, 75 FA ZZ
\r
227 xhere 3 + JNO, 71 01 ZZ
\r
228 xhere 3 + JNS, 79 01 ZZ
\r
230 xhere 3 + JPO, 7B 01 ZZ
\r
231 xhere 4 - JPO, 7B FA ZZ
\r
235 xhere 3 + JO, 70 01 ZZ
\r
237 xhere 3 + JPE, 7A 01 ZZ
\r
238 xhere 4 - JPE, 7A FA ZZ
\r
240 xhere 3 + JS, 78 01 ZZ
\r
244 LVAR [BX] AX LDS, C5 87 37 12 ZZ
\r
245 0 [BX] AX LDS, C5 07 ZZ
\r
247 LVAR [BX] BX LEA, 8D 9F 37 12 ZZ
\r
248 0 [BX] BX LEA, 8D 1F ZZ
\r
252 LVAR [BX] BX LES, C4 9F 37 12 ZZ
\r
253 0 [BX] BX LES, C4 1F ZZ
\r
255 LOCK, BYTE LODS, F0 AC ZZ
\r
258 xhere 8 - LOOP, E2 F6 ZZ
\r
259 xhere 9 - LOOPE, E1 F5 ZZ
\r
260 xhere 3 + LOOPNE, E0 01 ZZ
\r
264 0 [SI] SI MOV, 8B 34 ZZ
\r
265 2 [SI] SI MOV, 8B 74 02 ZZ
\r
266 DS: AL BVAR [BP] MOV, 3E 88 86 34 12 ZZ
\r
267 AX WVAR [BX] MOV, 89 87 35 12 ZZ
\r
268 AX 0 [BX] MOV, 89 07 ZZ
\r
269 DS: BVAR [BP] AL MOV, 3E 8A 86 34 12 ZZ
\r
270 WVAR [BX] AX MOV, 8B 87 35 12 ZZ
\r
271 DX CX MOV, 8B CA ZZ
\r
272 DX AX MOV, 8B C2 ZZ
\r
273 WVAR ) BP MOV, 8B 2E 35 12 ZZ
\r
274 BP WVAR ) MOV, 89 2E 35 12 ZZ
\r
275 9876 # DX MOV, BA 76 98 ZZ
\r
276 1 # DX MOV, BA 01 00 ZZ
\r
277 1 # DL MOV, B2 01 ZZ
\r
278 LVAR # WORD WVAR ) MOV, C7 06 35 12 37 12 ZZ
\r
279 67 # BVAR ) BYTE MOV, C6 06 34 12 67 ZZ
\r
280 CX SS MOV, 8E D1 ZZ
\r
281 DS CX MOV, 8C D9 ZZ
\r
282 WVAR ) ES MOV, 8E 06 35 12 ZZ
\r
283 CS WVAR ) MOV, 8C 0E 35 12 ZZ
\r
292 BVAR ) BYTE MUL, F6 26 34 12 ZZ
\r
296 WVAR [BX] WORD NEG, F7 9F 35 12 ZZ
\r
301 WVAR [BX] WORD NOT, F7 97 35 12 ZZ
\r
302 0 [BX] WORD NOT, F7 17 ZZ
\r
307 0 [SI] DH OR, 0A 34 ZZ
\r
308 BL 0 [SI] OR, 08 1C ZZ
\r
309 6789 # BX OR, 81 CB 89 67 ZZ
\r
310 7698 # WVAR ) WORD OR, 81 0E 35 12 98 76 ZZ
\r
311 5 # AX OR, 0D 05 00 ZZ
\r
313 44 # AX OUT, E7 44 ZZ
\r
314 45 # AL OUT, E6 45 ZZ
\r
322 WVAR [BX] WORD POP, 8F 87 35 12 ZZ
\r
328 WVAR [BX] WORD PUSH, FF B7 35 12 ZZ
\r
329 0 [BX] WORD PUSH, FF 37 ZZ
\r
336 AX CL RCL, D3 D0 ZZ
\r
337 WVAR ) WORD RCL, D1 16 35 12 ZZ
\r
338 WVAR ) CL WORD RCL, D3 16 35 12 ZZ
\r
341 AL CL RCR, D2 D8 ZZ
\r
342 BVAR ) BYTE RCR, D0 1E 34 12 ZZ
\r
343 BVAR ) CL BYTE RCR, D2 1E 34 12 ZZ
\r
347 REP, BYTE LODS, F3 AC ZZ
\r
348 REPE, BYTE LODS, F3 AC ZZ
\r
349 REPNE, BYTE LODS, F2 AC ZZ
\r
352 5 +RET, C2 05 00 ZZ
\r
354 1234 FAR +RET, CA 34 12 ZZ
\r
361 AL CL ROR, D2 C8 ZZ
\r
362 BVAR ) BYTE ROR, D0 0E 34 12 ZZ
\r
363 BVAR ) CL BYTE ROR, D2 0E 34 12 ZZ
\r
367 AL CL ROL, D2 C0 ZZ
\r
368 BVAR ) BYTE ROL, D0 06 34 12 ZZ
\r
369 BVAR ) CL BYTE ROL, D2 06 34 12 ZZ
\r
377 AL CL SHL, D2 E0 ZZ
\r
378 BVAR ) BYTE SHL, D0 26 34 12 ZZ
\r
379 BVAR ) CL BYTE SHL, D2 26 34 12 ZZ
\r
384 AL CL SAR, D2 F8 ZZ
\r
385 BVAR ) BYTE SAR, D0 3E 34 12 ZZ
\r
386 BVAR ) CL BYTE SAR, D2 3E 34 12 ZZ
\r
388 CH BH SBB, 18 EF ZZ
\r
389 0 [SI] CX SBB, 1B 0C ZZ
\r
390 CL 0 [SI] SBB, 18 0C ZZ
\r
391 6789 # BX SBB, 81 DB 89 67 ZZ
\r
392 9988 # WVAR ) WORD SBB, 81 1E 35 12 88 99 ZZ
\r
393 5 # AX SBB, 1D 05 00 ZZ
\r
401 AL CL SHR, D2 E8 ZZ
\r
402 BVAR ) BYTE SHR, D0 2E 34 12 ZZ
\r
403 BVAR ) CL BYTE SHR, D2 2E 34 12 ZZ
\r
416 DH DL SUB, 28 F2 ZZ
\r
417 0 [SI] CX SUB, 2B 0C ZZ
\r
418 DL 0 [SI] SUB, 28 14 ZZ
\r
419 6789 # BX SUB, 81 EB 89 67 ZZ
\r
420 1234 # WVAR ) WORD SUB, 81 2E 35 12 34 12 ZZ
\r
421 5 # AX SUB, 2D 05 00 ZZ
\r
425 SI SI TEST, 85 F6 ZZ
\r
426 CX 0 [SI] TEST, 85 0C ZZ
\r
427 6789 # BX TEST, F7 C3 89 67 ZZ
\r
428 1239 # WVAR ) WORD TEST, F7 06 35 12 39 12 ZZ
\r
429 5 # AX TEST, A9 05 00 ZZ
\r
434 BL AL XCHG, 86 C3 ZZ
\r
435 BX CX XCHG, 87 CB ZZ
\r
436 DX WVAR ) XCHG, 87 16 35 12 ZZ
\r
442 BX SI XOR, 31 DE ZZ
\r
443 0 [SI] CX XOR, 33 0C ZZ
\r
444 DX 0 [SI] XOR, 31 14 ZZ
\r
445 6789 # BX XOR, 81 F3 89 67 ZZ
\r
446 1234 # WVAR ) WORD XOR, 81 36 35 12 34 12 ZZ
\r
447 5 # AX XOR, 35 05 00 ZZ
\r
454 1 L# JNZ, 5B 5B 75 FC ZZ
\r
459 2 L: BX POP, 75 02 5B 5B 5B ZZ
\r
465 4 L: BX POP, 5B 75 03 5B 75 FA 5B ZZ
\r
473 5 L# JNZ, 5B 75 04 5B 75 01 5B 5B 75 F6 ZZ
\r
476 \ ---------- back to decimal here
\r
482 CHAR " PARSE FILE" ENVIRONMENT?
\r
484 0= [IF] << CON [THEN]
\r