Subversion Repositories Kolibri OS

Rev

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

Rev 109 Rev 317
Line -... Line 1...
-
 
1
;;      hex2dec2bin 0.2 by Alexei Ershov    ;;
-
 
2
;;      16.11.2006                          ;;
-
 
3
 
1
use32 	     ; âêëþ÷èòü 32-áèòíûé ðåæèì àññåìáëåðà
4
  use32 	     ; âêëþ÷èòü 32-áèòíûé ðåæèì àññåìáëåðà
2
  org	 0x0	     ; àäðåñàöèÿ ñ íóëÿ
5
  org	 0x0	     ; àäðåñàöèÿ ñ íóëÿ
Line 3... Line 6...
3
 
6
 
4
  db	 'MENUET01'  ; 8-áàéòíûé èäåíòèôèêàòîð MenuetOS
7
  db	 'MENUET01'  ; 8-áàéòíûé èäåíòèôèêàòîð MenuetOS
Line 8... Line 11...
8
  dd	 0x1000      ; êîëè÷åñòâî ïàìÿòè
11
  dd	 0x1000      ; êîëè÷åñòâî ïàìÿòè
9
  dd	 0x1000      ; àäðåñ âåðøèíû ñòýêà
12
  dd	 0x1000      ; àäðåñ âåðøèíû ñòýêà
10
  dd	 0x0	     ; àäðåñ áóôåðà äëÿ ïàðàìåòðîâ (íå èñïîëüçóåòñÿ)
13
  dd	 0x0	     ; àäðåñ áóôåðà äëÿ ïàðàìåòðîâ (íå èñïîëüçóåòñÿ)
11
  dd	 0x0	     ; çàðåçåðâèðîâàíî
14
  dd	 0x0	     ; çàðåçåðâèðîâàíî
Line 12... Line -...
12
 
-
 
13
include 'lang.inc'
15
 
Line 14... Line 16...
14
include 'macros.inc' ; ìàêðîñû îáëåã÷àþò æèçíü àññåìáëåðùèêîâ!
16
include 'MACROS.INC' ; ìàêðîñû îáëåã÷àþò æèçíü àññåìáëåðùèêîâ!
15
 
17
 
Line 107... Line 109...
107
    xchg  eax, ecx
109
    xchg  eax, ecx
108
    dec   edi
110
    dec   edi
109
    jmp   next_digit
111
    jmp   next_digit
Line 110... Line 112...
110
 
112
 
-
 
113
.done:
-
 
114
   mov	  [num], eax	; ñîõðàíÿåì ââåäåííîå ÷èñëî
-
 
115
   xor	  eax, eax
-
 
116
   mov	  al, ' '
111
.done:
117
   mov	  edi, string1
112
   mov	  [num], eax
-
 
-
 
118
   mov	  [index], edi
-
 
119
   mov	  ecx, string1_end-string1
113
 
120
   rep	  stosb 	; ñòèðàåì ââåäåííóþ ñòðîêó
Line 114... Line 121...
114
   jmp	  red
121
   jmp	  red
Line 115... Line 122...
115
 
122
 
116
;---------------------------------------------------------------------
123
;---------------------------------------------------------------------
117
 
124
 
-
 
125
  button:
-
 
126
    mcall 17		; 17 - ïîëó÷èòü èäåíòèôèêàòîð íàæàòîé êíîïêè
-
 
127
    cmp   ah, 1 	; åñëè ÍÅ íàæàòà êíîïêà ñ íîìåðîì 1,
-
 
128
    jne   @f
-
 
129
    mcall -1
118
  button:
130
@@:
-
 
131
    cmp   ah, 2
119
    mcall 17		; 17 - ïîëó÷èòü èäåíòèôèêàòîð íàæàòîé êíîïêè
132
    jne   @f
-
 
133
    shl   [num], 1
120
    cmp   ah, 1 	; åñëè ÍÅ íàæàòà êíîïêà ñ íîìåðîì 1,
134
    jmp   red
-
 
135
@@:
-
 
136
    cmp   ah, 3
-
 
137
    jne   @f
-
 
138
    shr   [num], 1
-
 
139
    jmp   red
121
    jne   still 	;  âåðíóòüñÿ
140
@@:
-
 
141
    cmp   ah, 4
Line -... Line 142...
-
 
142
    jne   still
122
 
143
    sar   [num], 1
-
 
144
    jmp   red
123
  .exit:
145
 
124
    mcall -1		; èíà÷å êîíåö ïðîãðàììû
146
;------------------------------------------------
125
 
-
 
126
draw_window:
-
 
127
    mcall 12, 1
-
 
128
    mcall 0, 200*65536+300, 200*65536+120, 0x02AABBCC, 0x805080D0, 0x005080D0
-
 
129
    mcall 4, 8*65536+8, 0x10DDEEFF, header, header_e - header
-
 
130
    mcall  , 15*65536+100, 0, numstr, 7
-
 
Line -... Line 147...
-
 
147
    draw_window:
-
 
148
;------------------------------------------------
-
 
149
    mcall 12, 1
-
 
150
    mcall 0, 200*65536+300, 200*65536+175, 0x13AABBCC,,header
Line -... Line 151...
-
 
151
 
-
 
152
    mcall  8, 15      *65536+ 38, 90*65536+ 15, 2, 0x6688DD ; êíîïêà shl
-
 
153
    mcall  ,		       ,110*65536+ 15,	,	   ; êíîïêà sal
131
    mcall  , 15*65536+72,   , hexstr, 4
154
    mcall  , (300-53)*65536+ 38, 90*65536+ 15, 3,	   ; êíîïêà shr
-
 
155
    mcall  ,		       ,110*65536+ 15, 4,	   ; êíîïêà sar
132
    mcall  , 15*65536+44,   , decstr,
156
 
-
 
157
    mcall  4, 15*65536+30,   0x80000000, binstr,
-
 
158
    mcall  , 15*65536+44,   , decstr,
-
 
159
    mcall  , 15*65536+58,   ,sdecstr,
-
 
160
    mcall  , 15*65536+72,   , hexstr,
133
    mcall  , 15*65536+30,   , binstr,
161
    mcall  , 15*65536+150,  , numstr,
Line 134... Line 162...
134
    mcall  , 15*65536+58,   ,sdecstr, 10
162
 
135
 
-
 
136
 
163
    mcall  ,	   25*65536+93,0x10000000,shlstr,3
137
    mcall 8, (300-19)*65536+ 12, 5*65536+ 12, 1, 0x6688DD
-
 
138
 
164
    mcall  , (300-43)*65536+93, 	, shrstr,
139
    mov    ecx, [num]
165
    mcall  ,	   25*65536+113,	, salstr,
140
 
166
    mcall  , (300-43)*65536+113,	, sarstr,
141
    mcall  47, 8*65536+256,,240*65536+72,0    ; 16-íàÿ
167
    mov    ecx, [num]
142
 
168
 
143
    mcall    , 10*65536,   ,228*65536+44,     ; 10-íàÿ
169
    mcall  47, 8*65536+256,,240*65536+72,0    ; 16-íàÿ
144
 
170
    mcall    , 10*65536,   ,228*65536+44,     ; 10-íàÿ
145
    mcall    , 8*65536+512,,240*65536+30,     ; 2-íàÿ
171
    mcall    , 8*65536+512,,240*65536+30,     ; 2-íàÿ
146
    ror    ecx, 8
172
    ror    ecx, 8
147
    mcall    , 8*65536+512,,(240-56)*65536+30,
173
    mcall    ,		  ,,(240-56)*65536+30,
148
    ror    ecx, 8
174
    ror    ecx, 8
149
    mcall    , 8*65536+512,,(240-56*2)*65536+30,
175
    mcall    ,		  ,,(240-56*2)*65536+30,
150
    ror    ecx, 8
176
    ror    ecx, 8
151
    mcall    , 8*65536+512,,(240-56*3)*65536+30,
177
    mcall    ,		  ,,(240-56*3)*65536+30,
152
    ror    ecx, 8
178
    ror    ecx, 8
-
 
179
    mov    [minus], '+'
153
    mov    byte [minus], '+'
180
    jnc    @f
154
    jnc    @f
-
 
155
    mov    byte [minus], '-'
-
 
156
    neg    ecx
181
    mov    [minus], '-'
Line 157... Line 182...
157
@@:
182
    neg    ecx
Line 158... Line 183...
158
    mcall   ,  10*65536,,228*65536+58,	      ; 10-íàÿ ñî çíàêîì
183
@@:
159
    mcall  4, 222*65536+58, 0, minus, 1
184
    mcall   ,  10*65536,,228*65536+58,	      ; 10-íàÿ ñî çíàêîì
160
    call Draw_String
185
    mcall  4, 222*65536+58, 0, minus, 1
161
 
-
 
162
 
-
 
163
    mcall 12, 2 		   ; ôóíêöèÿ 12: ñîîáùèòü ÎÑ îá îòðèñîâêå îêíà
-
 
164
 
-
 
165
ret
-
 
Line 166... Line -...
166
 
-
 
167
;-------------------------------------------------
186
    mcall 38, 15*65536+300-15, 137*65536+137, 0x006688DD
168
    Draw_String:
-
 
169
;-------------------------------------------------
187
    call   Draw_String
170
    mov  eax, 13
-
 
171
    mov  ebx, 60*65536+ 6*33
-
 
172
    mov  ecx, 100*65536+ 9
188
    mcall 12, 2 		   ; ôóíêöèÿ 12: ñîîáùèòü ÎÑ îá îòðèñîâêå îêíà
Line 173... Line 189...
173
    mov  edx, 0x02AABBCC
189
 
174
    int  0x40
190
ret
175
 
191
 
Line 221... Line 237...
221
string1_end:
237
string1_end:
222
  index dd string1
238
  index dd string1
223
num  dd  0
239
  num	dd  0
Line 224... Line 240...
224
 
240
 
225
 
-
 
226
header db 'hex2dec2bin'
241
 
227
header_e:
242
 header db 'hex2dec2bin 0.2',0
228
 minus	db '-'
243
 minus	db '-'
229
 numstr db 'Number:'
244
 numstr db 'Number:',0
230
 hexstr db 'hex:'
245
 hexstr db 'hex:',0
231
 binstr db 'bin:'
246
 binstr db 'bin:',0
-
 
247
 decstr db 'dec:',0
-
 
248
sdecstr db 'signed dec:',0
-
 
249
 shlstr db 'shl'
-
 
250
 salstr db 'sal'
Line 232... Line 251...
232
 decstr db 'dec:'
251
 shrstr db 'shr'