232 lines
		
	
	
	
		
			5.2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			232 lines
		
	
	
	
		
			5.2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
adc dst:REG, src:EADDR	==>	@text1( 0x13);
 | 
						|
				mod_RM( dst->reg, src).
 | 
						|
 | 
						|
add dst:REG, src:EADDR	==>	@text1( 0x3);
 | 
						|
				mod_RM( dst->reg, src).
 | 
						|
 | 
						|
... dst:ACCU, src:DATA	==>	@text1( 0x5);
 | 
						|
				@text2( %$(src->expr)).
 | 
						|
 | 
						|
... dst:EADDR, src:DATA	==>	@text1( 0x81);
 | 
						|
				mod_RM( 0, dst);
 | 
						|
				@text2( %$(src->expr)).
 | 
						|
 | 
						|
... dst:ACCU, src:lABEL	==>	@text1( 0x5);
 | 
						|
				@reloc2( %$(src->lab), %$(src->off), !PC_REL).
 | 
						|
 | 
						|
... dst:EADDR, src:lABEL ==>	@text1( 0x81);
 | 
						|
				mod_RM( 0, dst);
 | 
						|
				@reloc2( %$(src->lab), %$(src->off), !PC_REL).
 | 
						|
 | 
						|
and dst:REG, src:EADDR	==>	@text1( 0x23);
 | 
						|
				mod_RM( dst->reg, src).
 | 
						|
 | 
						|
... dst:ACCU, src:DATA	==>	@text1( 0x25);
 | 
						|
				@text2( %$(src->expr)).
 | 
						|
 | 
						|
call dst:lABEL		==>	@text1( 0xe8);
 | 
						|
				@reloc2( %$(dst->lab), %$(dst->off), PC_REL).
 | 
						|
 | 
						|
... dst:EADDR		==>	@text1( 0xff);
 | 
						|
				mod_RM( 2, dst).
 | 
						|
 | 
						|
cmp dst:REG, src:EADDR	==>	@text1( 0x3b);
 | 
						|
				mod_RM( dst->reg, src).
 | 
						|
 | 
						|
... dst:ACCU, src:DATA	==>	@text1( 0x3d);
 | 
						|
				@text2( %$(src->expr)).
 | 
						|
 | 
						|
... dst:EADDR, src:DATA	==>	@text1( 0x81);
 | 
						|
				mod_RM(7,dst);
 | 
						|
				@text2( %$(src->expr)).
 | 
						|
 | 
						|
cwd			==>	@text1( 0x99).
 | 
						|
 | 
						|
dec dst:REG		==>	R53( 9, dst->reg).
 | 
						|
 | 
						|
... dst:EADDR		==>	@text1( 0xff);
 | 
						|
				mod_RM( 1, dst).
 | 
						|
 | 
						|
div divisor:EADDR	==>	@text1( 0xf7);
 | 
						|
				mod_RM( 6, divisor).
 | 
						|
 | 
						|
idiv divisor:EADDR	==>	@text1( 0xf7);
 | 
						|
				mod_RM( 7, divisor).
 | 
						|
 | 
						|
inc dst:REG		==>	R53( 8, dst->reg).
 | 
						|
 | 
						|
... dst:EADDR		==>	@text1( 0xff);
 | 
						|
				mod_RM( 0, dst).
 | 
						|
 | 
						|
jb dst:ILB		==>	@text1( 0x72);
 | 
						|
				@text1( %dist( dst->lab)).
 | 
						|
 | 
						|
je dst:ILB		==>	@text1( 0x74);
 | 
						|
				@text1( %dist( dst->lab)).
 | 
						|
 | 
						|
... dst:lABEL		==>	save_op( dst);
 | 
						|
				assemble( "jne 9f");
 | 
						|
				jmp_instr( &saved_op);
 | 
						|
				assemble( "9:").
 | 
						|
 | 
						|
jg dst:ILB		==>	@text1( 0x7f);
 | 
						|
				@text1( %dist( dst->lab)).
 | 
						|
 | 
						|
... dst:lABEL		==>	save_op( dst);
 | 
						|
				assemble( "jle 9f");
 | 
						|
				jmp_instr( &saved_op);
 | 
						|
				assemble( "9:").
 | 
						|
 | 
						|
jge dst:ILB		==>	@text1( 0x7d);
 | 
						|
				@text1( %dist( dst->lab)).
 | 
						|
 | 
						|
... dst:lABEL		==>	save_op( dst);
 | 
						|
				assemble( "jl 9f");
 | 
						|
				jmp_instr( &saved_op);
 | 
						|
				assemble( "9:").
 | 
						|
 | 
						|
jl dst:ILB		==>	@text1( 0x7c);
 | 
						|
				@text1( %dist( dst->lab)).
 | 
						|
 | 
						|
... dst:lABEL		==>	save_op( dst);
 | 
						|
				assemble( "jge 9f");
 | 
						|
				jmp_instr( &saved_op);
 | 
						|
				assemble( "9:").
 | 
						|
 | 
						|
jle dst:ILB		==>	@text1( 0x7e);
 | 
						|
				@text1( %dist( dst->lab)).
 | 
						|
 | 
						|
... dst:lABEL		==>	save_op( dst);
 | 
						|
				assemble( "jg 9f");
 | 
						|
				jmp_instr( &saved_op);
 | 
						|
				assemble( "9:").
 | 
						|
 | 
						|
jmp dst:ILB		==>	@text1( 0xeb);
 | 
						|
				@text1( %dist( dst->lab)).
 | 
						|
 | 
						|
... dst:lABEL		==>	@text1( 0xe9);
 | 
						|
				@reloc2( %$(dst->lab), %$(dst->off), PC_REL).
 | 
						|
 | 
						|
jne dst:ILB		==>	@text1( 0x75);
 | 
						|
				@text1( %dist( dst->lab)).
 | 
						|
 | 
						|
... dst:lABEL		==>	save_op( dst);
 | 
						|
				assemble( "je 9f");
 | 
						|
				jmp_instr( &saved_op);
 | 
						|
				assemble( "9:").
 | 
						|
 | 
						|
lea dst:REG, src:EADDR	==>	@text1( 0x8d);
 | 
						|
				mod_RM( dst->reg, src).
 | 
						|
 | 
						|
loop dst:ILB		==>	@text1( 0xe2);
 | 
						|
				@text1( %dist( dst->lab)).
 | 
						|
 | 
						|
mov dst:REG, src:EADDR	==>	mov_REG_EADDR( dst, src).
 | 
						|
 | 
						|
... dst:REG, src:DATA	==>	R53( 0x17, dst->reg);
 | 
						|
				@text2( %$(src->expr)).
 | 
						|
 | 
						|
... dst:REG, src:lABEL	==>	R53( 0x17, dst->reg);
 | 
						|
				@reloc2( %$(src->lab), %$(src->off), !PC_REL).
 | 
						|
 | 
						|
... dst:EADDR, src:REG	==>	@text1( 0x89);
 | 
						|
				mod_RM( src->reg, dst).
 | 
						|
 | 
						|
... dst:EADDR, src:DATA	==>	@text1( 0xc7);
 | 
						|
				mod_RM( 0, dst);
 | 
						|
				@text2( %$(src->expr)).
 | 
						|
 | 
						|
... dst:EADDR, src:lABEL ==>	@text1( 0xc7);
 | 
						|
				mod_RM( 0, dst);
 | 
						|
				@reloc2( %$(src->lab), %$(src->off), !PC_REL).
 | 
						|
 | 
						|
movb dst:REG, src:EADDR	==>	@text1( 0x8a);
 | 
						|
				mod_RM( dst->reg, src).
 | 
						|
 | 
						|
... dst:EADDR, src:REG	==>	@text1( 0x88);
 | 
						|
				mod_RM( src->reg, dst).
 | 
						|
 | 
						|
mul mplier:EADDR	==>	@text1( 0xf7);
 | 
						|
				mod_RM( 4, mplier).
 | 
						|
 | 
						|
neg dst:EADDR		==>	@text1( 0xf7);
 | 
						|
				mod_RM( 3, dst).
 | 
						|
 | 
						|
not dst:EADDR		==>	@text1( 0xf7);
 | 
						|
				mod_RM( 2, dst).
 | 
						|
 | 
						|
or dst:REG, src:EADDR	==>	@text1( 0x0b);
 | 
						|
				mod_RM( dst->reg, src).
 | 
						|
 | 
						|
pop dst:REG		==>	R53( 0xb, dst->reg).
 | 
						|
 | 
						|
... dst:EADDR		==>	@text1( 0x8f);
 | 
						|
				mod_RM( 0, dst).
 | 
						|
 | 
						|
POP dst			==>	@if ( push_waiting)
 | 
						|
					mov_instr( dst, AX_oper);
 | 
						|
					@assign( push_waiting, FALSE).
 | 
						|
				@else
 | 
						|
					pop_instr( dst).
 | 
						|
				@fi.
 | 
						|
 | 
						|
push src:REG		==>	R53( 0xa, src->reg).
 | 
						|
 | 
						|
... src:EADDR		==>	@text1( 0xff);
 | 
						|
				mod_RM( 6, src).
 | 
						|
 | 
						|
PUSH src		==>	mov_instr( AX_oper, src);
 | 
						|
				@assign( push_waiting, TRUE).
 | 
						|
 | 
						|
rcr dst:EADDR, src:CONST1 ==>	@text1( 0xd1);
 | 
						|
				mod_RM( 3, dst).
 | 
						|
 | 
						|
rep ins:MOVS		==>	@text1( 0xf3);
 | 
						|
				@text1( 0xa5).	/* Wie zet direction flag? */
 | 
						|
 | 
						|
ret			==>	@text1( 0xc3).	/* Altijd NEAR! */
 | 
						|
 | 
						|
rol dst:EADDR, src:REG_CL ==>	@text1( 0xd3);
 | 
						|
				mod_RM( 0, dst).
 | 
						|
 | 
						|
ror dst:EADDR, src:REG_CL ==>	@text1( 0xd3);
 | 
						|
				mod_RM( 1, dst).
 | 
						|
 | 
						|
sal dst:EADDR, src:REG_CL ==>	@text1( 0xd3);
 | 
						|
				mod_RM( 4, dst).
 | 
						|
 | 
						|
sar dst:EADDR, src:REG_CL ==>	@text1( 0xd3);
 | 
						|
				mod_RM( 7, dst).
 | 
						|
 | 
						|
... dst:EADDR, src:CONST1 ==>	@text1( 0xd1);
 | 
						|
				mod_RM( 7, dst).
 | 
						|
 | 
						|
sbb dst:REG, src:EADDR	==>	@text1( 0x1b);
 | 
						|
				mod_RM( dst->reg, src).
 | 
						|
 | 
						|
... dst:ACCU, src:DATA	==>	@text1( 0x1d);
 | 
						|
				@text2( %$(src->expr)).
 | 
						|
 | 
						|
shl dst, src		==>	sal_instr( dst, src).
 | 
						|
 | 
						|
shr dst:EADDR, src:REG_CL ==>	@text1( 0xd3);
 | 
						|
				mod_RM( 5, dst).
 | 
						|
 | 
						|
... dst:EADDR, src:CONST1 ==>	@text1( 0xd1);
 | 
						|
				mod_RM( 5, dst).
 | 
						|
 | 
						|
sub dst:REG, src:EADDR	==>	@text1( 0x2b);
 | 
						|
				mod_RM( dst->reg, src).
 | 
						|
 | 
						|
... dst:EADDR, src:DATA	==>	@text1( 0x81);
 | 
						|
				mod_RM( 5, dst);
 | 
						|
				@text2( %$(src->expr)).
 | 
						|
 | 
						|
test dst:REG, src:EADDR	==>	@text1( 0x85);
 | 
						|
				mod_RM( dst->reg, src).
 | 
						|
 | 
						|
xchg dst:EADDR, src:REG	==>	@text1( 0x87);
 | 
						|
				mod_RM( src->reg, dst).
 | 
						|
 | 
						|
xor dst:REG, src:EADDR	==>	@text1( 0x33);
 | 
						|
				mod_RM( dst->reg, src).
 |