Subversion Repositories Kolibri OS

Rev

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
	@@: