1,3 → 1,6 |
;; hex2dec2bin 0.2 by Alexei Ershov ;; |
;; 16.11.2006 ;; |
|
use32 ; âêëþ÷èòü 32-áèòíûé ðåæèì àññåìáëåðà |
org 0x0 ; àäðåñàöèÿ ñ íóëÿ |
|
10,8 → 13,7 |
dd 0x0 ; àäðåñ áóôåðà äëÿ ïàðàìåòðîâ (íå èñïîëüçóåòñÿ) |
dd 0x0 ; çàðåçåðâèðîâàíî |
|
include 'lang.inc' |
include 'macros.inc' ; ìàêðîñû îáëåã÷àþò æèçíü àññåìáëåðùèêîâ! |
include 'MACROS.INC' ; ìàêðîñû îáëåã÷àþò æèçíü àññåìáëåðùèêîâ! |
|
|
START: |
109,8 → 111,13 |
jmp next_digit |
|
.done: |
mov [num], eax |
|
mov [num], eax ; ñîõðàíÿåì ââåäåííîå ÷èñëî |
xor eax, eax |
mov al, ' ' |
mov edi, string1 |
mov [index], edi |
mov ecx, string1_end-string1 |
rep stosb ; ñòèðàåì ââåäåííóþ ñòðîêó |
jmp red |
|
;--------------------------------------------------------------------- |
118,48 → 125,66 |
button: |
mcall 17 ; 17 - ïîëó÷èòü èäåíòèôèêàòîð íàæàòîé êíîïêè |
cmp ah, 1 ; åñëè ÍÅ íàæàòà êíîïêà ñ íîìåðîì 1, |
jne still ; âåðíóòüñÿ |
jne @f |
mcall -1 |
@@: |
cmp ah, 2 |
jne @f |
shl [num], 1 |
jmp red |
@@: |
cmp ah, 3 |
jne @f |
shr [num], 1 |
jmp red |
@@: |
cmp ah, 4 |
jne still |
sar [num], 1 |
jmp red |
|
.exit: |
mcall -1 ; èíà÷å êîíåö ïðîãðàììû |
|
;------------------------------------------------ |
draw_window: |
;------------------------------------------------ |
mcall 12, 1 |
mcall 0, 200*65536+300, 200*65536+120, 0x02AABBCC, 0x805080D0, 0x005080D0 |
mcall 4, 8*65536+8, 0x10DDEEFF, header, header_e - header |
mcall , 15*65536+100, 0, numstr, 7 |
mcall , 15*65536+72, , hexstr, 4 |
mcall , 15*65536+44, , decstr, |
mcall , 15*65536+30, , binstr, |
mcall , 15*65536+58, ,sdecstr, 10 |
mcall 0, 200*65536+300, 200*65536+175, 0x13AABBCC,,header |
|
mcall 8, 15 *65536+ 38, 90*65536+ 15, 2, 0x6688DD ; êíîïêà shl |
mcall , ,110*65536+ 15, , ; êíîïêà sal |
mcall , (300-53)*65536+ 38, 90*65536+ 15, 3, ; êíîïêà shr |
mcall , ,110*65536+ 15, 4, ; êíîïêà sar |
|
mcall 8, (300-19)*65536+ 12, 5*65536+ 12, 1, 0x6688DD |
mcall 4, 15*65536+30, 0x80000000, binstr, |
mcall , 15*65536+44, , decstr, |
mcall , 15*65536+58, ,sdecstr, |
mcall , 15*65536+72, , hexstr, |
mcall , 15*65536+150, , numstr, |
|
mcall , 25*65536+93,0x10000000,shlstr,3 |
mcall , (300-43)*65536+93, , shrstr, |
mcall , 25*65536+113, , salstr, |
mcall , (300-43)*65536+113, , sarstr, |
mov ecx, [num] |
|
mcall 47, 8*65536+256,,240*65536+72,0 ; 16-íàÿ |
|
mcall , 10*65536, ,228*65536+44, ; 10-íàÿ |
|
mcall , 8*65536+512,,240*65536+30, ; 2-íàÿ |
ror ecx, 8 |
mcall , 8*65536+512,,(240-56)*65536+30, |
mcall , ,,(240-56)*65536+30, |
ror ecx, 8 |
mcall , 8*65536+512,,(240-56*2)*65536+30, |
mcall , ,,(240-56*2)*65536+30, |
ror ecx, 8 |
mcall , 8*65536+512,,(240-56*3)*65536+30, |
mcall , ,,(240-56*3)*65536+30, |
ror ecx, 8 |
mov byte [minus], '+' |
mov [minus], '+' |
jnc @f |
mov byte [minus], '-' |
mov [minus], '-' |
neg ecx |
@@: |
mcall , 10*65536,,228*65536+58, ; 10-íàÿ ñî çíàêîì |
mcall 4, 222*65536+58, 0, minus, 1 |
mcall 38, 15*65536+300-15, 137*65536+137, 0x006688DD |
call Draw_String |
|
|
mcall 12, 2 ; ôóíêöèÿ 12: ñîîáùèòü ÎÑ îá îòðèñîâêå îêíà |
|
ret |
167,18 → 192,9 |
;------------------------------------------------- |
Draw_String: |
;------------------------------------------------- |
mov eax, 13 |
mov ebx, 60*65536+ 6*33 |
mov ecx, 100*65536+ 9 |
mov edx, 0x02AABBCC |
int 0x40 |
|
mov eax,4 |
mov ebx,60*65536+100 |
mov ecx,0xA40473 |
mov edx,string1 |
mov esi,33 |
int 0x40 |
mcall 4, 60*65536+150, 0x40A40473, \ |
string1,string1_end-string1,0x00AABBCC |
ret |
|
;------------------------------------------------- |
223,13 → 239,16 |
num dd 0 |
|
|
header db 'hex2dec2bin' |
header_e: |
header db 'hex2dec2bin 0.2',0 |
minus db '-' |
numstr db 'Number:' |
hexstr db 'hex:' |
binstr db 'bin:' |
decstr db 'dec:' |
sdecstr db 'signed dec:' |
numstr db 'Number:',0 |
hexstr db 'hex:',0 |
binstr db 'bin:',0 |
decstr db 'dec:',0 |
sdecstr db 'signed dec:',0 |
shlstr db 'shl' |
salstr db 'sal' |
shrstr db 'shr' |
sarstr db 'sar' |
|
I_END: ; ìåòêà êîíöà ïðîãðàììû |