Rev 6873 | Rev 8408 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 6873 | Rev 8069 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | format MS COFF |
1 | format MS COFF |
2 | public EXPORTS |
2 | public EXPORTS |
3 | section '.flat' code readable align 16 |
3 | section '.flat' code readable align 16 |
Line 4... | Line 4... | ||
4 | 4 | ||
5 | include '../../../../../programs/proc32.inc' |
5 | include '../../../../proc32.inc' |
- | 6 | include '../../../../macros.inc' |
|
Line 6... | Line 7... | ||
6 | include '../../../../../programs/macros.inc' |
7 | include '../../../../KOSfuncs.inc' |
Line 7... | Line 8... | ||
7 | 8 | ||
8 | DEBUG equ 0 |
9 | DEBUG equ 0 |
Line 83... | Line 84... | ||
83 | ret |
84 | ret |
84 | endp |
85 | endp |
Line 85... | Line 86... | ||
85 | 86 | ||
86 | align 4 |
87 | align 4 |
87 | .str: |
- | |
88 | mov ecx,0x0a ;задается система счисления изменяются регистры ebx,eax,ecx,edx входные параметры eax - число |
- | |
- | 88 | .str: |
|
89 | ;преревод числа в ASCII строку входные данные ecx=система счисленя edi адрес куда записывать, будем строку, причем конец переменной |
89 | mov ecx,10 |
90 | cmp eax,ecx ;сравнить если в eax меньше чем в ecx то перейти на @@-1 т.е. на pop eax |
90 | cmp eax,ecx |
91 | jb @f |
91 | jb @f |
92 | xor edx,edx ;очистить edx |
92 | xor edx,edx |
93 | div ecx ;разделить - остаток в edx |
93 | div ecx |
94 | push edx ;положить в стек |
- | |
- | 94 | push edx |
|
95 | call .str ;перейти на саму себя т.е. вызвать саму себя и так до того момента пока в eax не станет меньше чем в ecx |
95 | call .str |
96 | pop eax |
- | |
- | 96 | pop eax |
|
97 | @@: ;cmp al,10 ;проверить не меньше ли значение в al чем 10 (для системы счисленя 10 данная команда - лишная)) |
97 | @@: |
98 | cmp edi,esi |
98 | cmp edi,esi |
99 | jge @f |
99 | jge @f |
100 | or al,0x30 ;данная команда короче чем две выше |
- | |
- | 100 | or al,0x30 |
|
101 | stosb ;записать элемент из регистра al в ячеку памяти es:edi |
101 | stosb |
102 | mov byte[edi],0 ;в конец строки ставим 0, что-бы не вылазил мусор |
102 | mov byte[edi],0 |
103 | @@: |
- | |
- | 103 | @@: |
|
104 | ret ;пока в стеке храниться кол-во вызовов то столько раз мы и будем вызываться |
104 | ret |
Line 105... | Line 105... | ||
105 | end if |
105 | end if |
106 | 106 | ||
107 | ; *** |
107 | ; *** |
Line 154... | Line 154... | ||
154 | f_fill_tr_nll db ' len',0 |
154 | f_fill_tr_nll db ' len',0 |
Line 155... | Line 155... | ||
155 | 155 | ||
156 | align 4 |
156 | align 4 |
157 | proc dbg_print, fun:dword, mes:dword |
157 | proc dbg_print, fun:dword, mes:dword |
158 | pushad |
158 | pushad |
159 | mov eax,63 |
159 | mov eax,SF_BOARD |
Line 160... | Line 160... | ||
160 | mov ebx,1 |
160 | mov ebx,SSF_DEBUG_WRITE |
161 | 161 | ||
162 | mov esi,[fun] |
162 | mov esi,[fun] |
163 | @@: |
163 | @@: |