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 |