Subversion Repositories Kolibri OS

Rev

Rev 707 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 707 Rev 992
Line 151... Line 151...
151
      new_line:
151
      new_line:
152
	lods	dword [esi]
152
	lods	dword [esi]
153
	mov	[current_line],eax
153
	mov	[current_line],eax
154
	mov	[prefixed_instruction],0
154
	mov	[prefixed_instruction],0
155
      continue_line:
155
	cmp	[symbols_file],0
-
 
156
	je	continue_line
-
 
157
	mov	ebx,[display_buffer]
-
 
158
	mov	dword [ebx-4],1
-
 
159
	mov	dword [ebx-8],1Ch
-
 
160
	sub	ebx,8+1Ch
-
 
161
	cmp	ebx,edi
-
 
162
	jbe	out_of_memory
-
 
163
	mov	[display_buffer],ebx
-
 
164
	mov	[ebx],eax
-
 
165
	mov	[ebx+4],edi
-
 
166
	mov	eax,dword [org_origin]
-
 
167
	mov	edx,dword [org_origin+4]
-
 
168
	mov	ecx,[org_registers]
-
 
169
	mov	[ebx+8],eax
-
 
170
	mov	[ebx+8+4],edx
-
 
171
	mov	[ebx+10h],ecx
-
 
172
	mov	edx,[org_symbol]
-
 
173
	mov	eax,dword [labels_type]
-
 
174
	mov	[ebx+14h],edx
-
 
175
	mov	[ebx+18h],eax
-
 
176
      continue_line:
156
	cmp	byte [esi],0Fh
177
	cmp	byte [esi],0Fh
157
	je	line_assembled
178
	je	line_assembled
158
	jmp	assemble_line
179
	jmp	assemble_line
159
      define_label:
180
      define_label:
160
	lods	dword [esi]
181
	lods	dword [esi]
Line 726... Line 747...
726
	lods	dword [esi]
747
	lods	dword [esi]
727
	mov	ecx,eax
748
	mov	ecx,eax
728
	push	edi
749
	push	edi
729
	mov	edi,[display_buffer]
750
	mov	edi,[display_buffer]
730
	sub	edi,4
751
	sub	edi,8
731
	sub	edi,eax
752
	sub	edi,eax
732
	mov	[display_buffer],edi
753
	cmp	edi,[esp]
-
 
754
	jbe	out_of_memory
-
 
755
	mov	[display_buffer],edi
733
	rep	movs byte [edi],[esi]
756
	rep	movs byte [edi],[esi]
734
	stos	dword [edi]
757
	stos	dword [edi]
735
	pop	edi
758
	xor	eax,eax
-
 
759
	stos	dword [edi]
-
 
760
	pop	edi
736
	inc	esi
761
	inc	esi
737
	jmp	display_next
762
	jmp	display_next
738
      display_byte:
763
      display_byte:
739
	call	get_byte_value
764
	call	get_byte_value
740
	push	edi
765
	push	edi
741
	mov	edi,[display_buffer]
766
	mov	edi,[display_buffer]
742
	sub	edi,4+1
767
	sub	edi,8+1
743
	mov	[display_buffer],edi
768
	mov	[display_buffer],edi
744
	stos	byte [edi]
769
	stos	byte [edi]
745
	mov	eax,1
770
	mov	eax,1
746
	stos	dword [edi]
771
	stos	dword [edi]
747
	pop	edi
772
	dec	eax
-
 
773
	stos	dword [edi]
-
 
774
	pop	edi
748
      display_next:
775
      display_next:
749
	cmp	edi,[display_buffer]
776
	cmp	edi,[display_buffer]
750
	ja	out_of_memory
777
	ja	out_of_memory
751
	lods	byte [esi]
778
	lods	byte [esi]
752
	cmp	al,','
779
	cmp	al,','
753
	je	display_directive
780
	je	display_directive
754
	dec	esi
781
	dec	esi
755
	jmp	instruction_assembled
782
	jmp	instruction_assembled
756
flush_display_buffer:
783
show_display_buffer:
757
	mov	eax,[display_buffer]
784
	mov	eax,[display_buffer]
758
	or	eax,eax
785
	or	eax,eax
759
	jz	display_done
786
	jz	display_done
760
	mov	esi,[labels_list]
787
	mov	esi,[labels_list]
761
	cmp	esi,eax
788
	cmp	esi,eax
762
	je	display_done
789
	je	display_done
763
      display_messages:
790
      display_messages:
764
	sub	esi,4
791
	sub	esi,8
765
	mov	ecx,[esi]
792
	mov	eax,[esi+4]
-
 
793
	mov	ecx,[esi]
766
	sub	esi,ecx
794
	sub	esi,ecx
767
	push	esi
795
	test	eax,eax
-
 
796
	jnz	skip_internal_message
-
 
797
	push	esi
768
	call	display_block
798
	call	display_block
769
	pop	esi
799
	pop	esi
770
	cmp	esi,[display_buffer]
800
      skip_internal_message:
-
 
801
	cmp	esi,[display_buffer]
771
	jne	display_messages
802
	jne	display_messages
772
	mov	eax,[labels_list]
803
      display_done:
773
	mov	[display_buffer],eax
-
 
774
      display_done:
-
 
775
	ret
804
	ret
776
times_directive:
805
 
-
 
806
times_directive:
777
	lods	byte [esi]
807
	lods	byte [esi]
778
	cmp	al,'('
808
	cmp	al,'('
779
	jne	invalid_argument
809
	jne	invalid_argument
780
	cmp	byte [esi],'.'
810
	cmp	byte [esi],'.'
781
	je	invalid_value
811
	je	invalid_value