forked from KolibriOS/kolibrios
New versions of End and RDsave. See forum for detales.
git-svn-id: svn://kolibrios.org@4213 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
daa2b8868e
commit
fa45c7e5db
5
data/common/settings/rdsave.ini
Normal file
5
data/common/settings/rdsave.ini
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
[path]
|
||||||
|
path=/usbhdd0/1/kolibri.img
|
||||||
|
[settings]
|
||||||
|
autoclose=0
|
||||||
|
autosave=0
|
@ -1,42 +1,98 @@
|
|||||||
if lang eq ru
|
if lang eq ru
|
||||||
label2:
|
label2:
|
||||||
db '‚몫îç¨âì Ÿ¤à®',0
|
db '‚몫îç¨âì Ÿ¤à®',0
|
||||||
label3:
|
label3:
|
||||||
db '<27>¥à¥§ ¯ã᪠Žâ¬¥ ',0
|
db '<27>¥à¥§ ¯ã᪠Žâ¬¥ ',0
|
||||||
label4:
|
label4:
|
||||||
db '‘®åà ¨âì áâனª¨ (Ctrl-S)',0
|
db '‘®åà ¨âì áâனª¨ (Ctrl-S)',0
|
||||||
|
|
||||||
else if lang eq ge
|
else if lang eq ge
|
||||||
label2:
|
label2:
|
||||||
db ' Beenden Kernel',0
|
db ' Beenden Kernel',0
|
||||||
label3:
|
label3:
|
||||||
db ' Neustart Abbrechen',0
|
db ' Neustart Abbrechen',0
|
||||||
label4:
|
label4:
|
||||||
db 'Save your settings (Ctrl-S)',0
|
db 'Save your settings (Ctrl-S)',0
|
||||||
|
|
||||||
else if lang eq it
|
else if lang eq it
|
||||||
label2:
|
label2:
|
||||||
db ' Spegni Kernel',0
|
db ' Spegni Kernel',0
|
||||||
label3:
|
label3:
|
||||||
db ' Riavvio Annulla',0
|
db ' Riavvio Annulla',0
|
||||||
label4:
|
label4:
|
||||||
db 'Salva impostazioni (Ctrl-S)',0
|
db 'Salva impostazioni (Ctrl-S)',0
|
||||||
|
|
||||||
else
|
else
|
||||||
label2:
|
label2:
|
||||||
db 'Power off Kernel',0
|
db ' Power off Kernel',0
|
||||||
label3:
|
label3:
|
||||||
db ' Restart Cancel',0
|
db ' Restart Cancel',0
|
||||||
label4:
|
label4:
|
||||||
db 'Save your settings (Ctrl-S)',0
|
db 'Save your settings (Ctrl-S)',0
|
||||||
|
|
||||||
end if
|
end if
|
||||||
|
|
||||||
label5:
|
label5:
|
||||||
db '(End) (Home)',0
|
db '(End) (Home)',0
|
||||||
label6:
|
label6:
|
||||||
db '(Enter) (Esc)',0
|
db '(Enter) (Esc)',0
|
||||||
|
|
||||||
rdsave:
|
rdsave:
|
||||||
dd 7,0,0,0,0
|
dd 7,0,hide,0,0
|
||||||
db '/sys/rdsave',0
|
db '/sys/rdsave',0
|
||||||
|
;---------------------------------------------------------------------
|
||||||
|
;Lib_DATA
|
||||||
|
;‚ᥣ¤ ᮡ«î¤ âì ¯®á«¥¤®¢ ⥫ì®áâì ¢ ¨¬¥¨.
|
||||||
|
system_dir_Boxlib db '/sys/lib/box_lib.obj',0
|
||||||
|
system_dir_libini db '/sys/lib/libini.obj',0
|
||||||
|
;---------------------------------------------------------------------
|
||||||
|
head_f_i:
|
||||||
|
head_f_l db 'System error',0
|
||||||
|
|
||||||
|
err_message_found_lib1 db 'box_lib.obj - Not found!',0
|
||||||
|
err_message_found_lib2 db 'libini.obj - Not found!',0
|
||||||
|
|
||||||
|
err_message_import1 db 'box_lib.obj - Wrong import!',0
|
||||||
|
err_message_import2 db 'libini.obj - Wrong import!',0
|
||||||
|
;---------------------------------------------------------------------
|
||||||
|
l_libs_start:
|
||||||
|
|
||||||
|
library01 l_libs system_dir_Boxlib+9, cur_dir_path, library_path, system_dir_Boxlib, \
|
||||||
|
err_message_found_lib1, head_f_l, Box_lib_import, err_message_import1, head_f_i
|
||||||
|
|
||||||
|
library02 l_libs system_dir_libini+9, cur_dir_path, library_path, system_dir_libini, \
|
||||||
|
err_message_found_lib2, head_f_l, libini_import, err_message_import2, head_f_i
|
||||||
|
|
||||||
|
end_l_libs:
|
||||||
|
;---------------------------------------------------------------------
|
||||||
|
align 4
|
||||||
|
Box_lib_import:
|
||||||
|
init_checkbox2 dd aInit_checkbox2
|
||||||
|
check_box_draw2 dd aCheck_box_draw2
|
||||||
|
check_box_mouse2 dd aCheck_box_mouse2
|
||||||
|
;version_ch2 dd aVersion_ch2
|
||||||
|
dd 0
|
||||||
|
dd 0
|
||||||
|
aInit_checkbox2 db 'init_checkbox2',0
|
||||||
|
aCheck_box_draw2 db 'check_box_draw2',0
|
||||||
|
aCheck_box_mouse2 db 'check_box_mouse2',0
|
||||||
|
;aVersion_ch2 db 'version_ch2',0
|
||||||
|
;---------------------------------------------------------------------
|
||||||
|
align 4
|
||||||
|
libini_import:
|
||||||
|
init_lib dd a_init
|
||||||
|
ini_get_int dd aini_get_int
|
||||||
|
ini_set_int dd aini_set_int
|
||||||
|
dd 0
|
||||||
|
dd 0
|
||||||
|
a_init db 'lib_init',0
|
||||||
|
aini_get_int db 'ini_get_int',0
|
||||||
|
aini_set_int db 'ini_set_int',0
|
||||||
|
;---------------------------------------------------------------------
|
||||||
|
|
||||||
|
check1 check_box2 20 shl 16 +8,93 shl 16 +8,6,0xffffff,0,0,label4
|
||||||
|
|
||||||
|
hide db 'h',0
|
||||||
|
asettings db 'settings',0
|
||||||
|
aautosave db 'autosave',0
|
||||||
|
ini_file db '/sys/settings/rdsave.ini',0
|
||||||
|
@ -2,71 +2,83 @@
|
|||||||
; END
|
; END
|
||||||
; KolibriOS Team 2005-2013
|
; KolibriOS Team 2005-2013
|
||||||
;
|
;
|
||||||
include "lang.inc"
|
|
||||||
include "..\..\..\macros.inc"
|
|
||||||
; <diamond> note that 'mov al,xx' is shorter than 'mov eax,xx'
|
; <diamond> note that 'mov al,xx' is shorter than 'mov eax,xx'
|
||||||
; and if we know that high 24 bits of eax are zero, we can use 1st form
|
; and if we know that high 24 bits of eax are zero, we can use 1st form
|
||||||
; the same about ebx,ecx,edx
|
; the same about ebx,ecx,edx
|
||||||
|
|
||||||
meos_app_start
|
use32 ; âêëþ÷èòü 32-áèòíûé ðåæèì àññåìáëåðà
|
||||||
code
|
org 0x0 ; àäðåñàöèÿ ñ íóëÿ
|
||||||
draw_window:
|
|
||||||
mov al,12
|
|
||||||
mcall ,1
|
|
||||||
|
|
||||||
mov al,14
|
db 'MENUET01' ; 8-áàéòíûé èäåíòèôèêàòîð MenuetOS
|
||||||
mcall ;eax=14 - get screen max x & max y
|
dd 0x01 ; âåðñèÿ çàãîëîâêà (âñåãäà 1)
|
||||||
movzx ecx,ax
|
dd START ; àäðåñ ïåðâîé êîìàíäû
|
||||||
shr eax,17
|
dd IM_END ; ðàçìåð ïðîãðàììû
|
||||||
shl eax,16
|
dd I_END ; êîëè÷åñòâî ïàìÿòè
|
||||||
lea ebx,[eax-110 shl 16+222]
|
dd stacktop ; àäðåñ âåðøèíû ñòåêà
|
||||||
shr ecx,1
|
dd 0x0 ; àäðåñ áóôåðà äëÿ ïàðàìåòðîâ
|
||||||
shl ecx,16
|
dd cur_dir_path
|
||||||
lea ecx,[ecx-65 shl 16+137]
|
|
||||||
|
|
||||||
xor eax,eax
|
include 'lang.inc'
|
||||||
mcall , , ,0x019098b0,0x01000000 ;define and draw window
|
include '../../../macros.inc'
|
||||||
|
include '../../../proc32.inc'
|
||||||
|
include '../../../dll.inc'
|
||||||
|
include '../../../develop/libraries/box_lib/load_lib.mac'
|
||||||
|
include '../../../develop/libraries/box_lib/trunk/box_lib.mac'
|
||||||
|
|
||||||
mov al,13
|
@use_library
|
||||||
mcall ,<0,223> ,<0,275>
|
|
||||||
mcall ,<1,221>,<1,136>,0xffffff
|
|
||||||
mcall ,<2,220>,<2,135>,0xe4dfe1
|
|
||||||
mcall ,<16,189>,<97,23>,0x9098b0
|
|
||||||
|
|
||||||
mov al,8
|
align 4
|
||||||
mcall ,<16,90> ,<20,27>,4,0x990022 ;eax=8 - draw buttons
|
START:
|
||||||
mcall ,<113,90>, ,2,0xaa7700
|
|
||||||
mcall , ,<54,27>,1,0x777777
|
|
||||||
mcall ,<16,90> , ,3,0x007700
|
|
||||||
mcall ,<17,186>,<98,20>,5,0xe4dfe1
|
|
||||||
|
|
||||||
mov al,4
|
load_libraries l_libs_start,end_l_libs
|
||||||
mcall ,<28,105>,0x80000000,label4 ;eax=4 - write text
|
inc eax
|
||||||
mcall ,<35,24> ,0x80ffffff,label2
|
test eax,eax
|
||||||
mcall ,<34,58> , ,label3
|
jz close
|
||||||
mcall ,<47,37> , ,label5
|
|
||||||
mcall ,<43,71> , ,label6
|
|
||||||
|
|
||||||
mov al,12
|
push dword check1
|
||||||
mcall ,2
|
call [init_checkbox2]
|
||||||
|
|
||||||
|
stdcall dll.Init,[init_lib]
|
||||||
|
|
||||||
|
invoke ini_get_int,ini_file,asettings,aautosave,0
|
||||||
|
mov [autosave],eax
|
||||||
|
cmp eax,1
|
||||||
|
jne @f
|
||||||
|
bts dword [check1.flags],1
|
||||||
|
@@:
|
||||||
|
mcall 40,0x00000027
|
||||||
|
redraw:
|
||||||
|
call draw_window
|
||||||
still:
|
still:
|
||||||
mov al,10
|
mov al,10
|
||||||
mcall ;wait here for event
|
mcall ;wait here for event
|
||||||
dec eax
|
dec eax
|
||||||
jz draw_window
|
jz redraw
|
||||||
dec eax
|
dec eax
|
||||||
jnz button
|
jz key
|
||||||
|
dec eax
|
||||||
|
jz button
|
||||||
|
|
||||||
|
push dword check1
|
||||||
|
call [check_box_mouse2]
|
||||||
|
bt dword [check1.flags],1
|
||||||
|
jnc @f
|
||||||
|
mov [autosave],1
|
||||||
|
jmp still
|
||||||
|
@@:
|
||||||
|
mov [autosave],0
|
||||||
|
jmp still
|
||||||
|
|
||||||
|
key:
|
||||||
mov al,2
|
mov al,2
|
||||||
mcall ;eax=2 - get key code
|
mcall ;eax=2 - get key code
|
||||||
mov al,ah
|
mov al,ah
|
||||||
cmp al,13
|
cmp al,13
|
||||||
jz restart
|
jz restart
|
||||||
cmp al,19
|
cmp al,19
|
||||||
jz run_rdsave
|
jz checkbox
|
||||||
cmp al,27
|
cmp al,27
|
||||||
jz close_1
|
jz close
|
||||||
cmp al,180
|
cmp al,180
|
||||||
jz restart_kernel
|
jz restart_kernel
|
||||||
cmp al,181
|
cmp al,181
|
||||||
@ -74,45 +86,127 @@ still:
|
|||||||
jmp still
|
jmp still
|
||||||
|
|
||||||
button:
|
button:
|
||||||
mov al,17
|
mcall 17 ;eax=17 - get pressed button id
|
||||||
mcall ;eax=17 - get pressed button id
|
|
||||||
xchg al,ah
|
xchg al,ah
|
||||||
dec eax
|
dec eax
|
||||||
jz close_1
|
jz close
|
||||||
dec eax
|
dec eax
|
||||||
jz restart_kernel
|
jz restart_kernel
|
||||||
dec eax
|
dec eax
|
||||||
jz restart
|
jz restart
|
||||||
dec eax
|
dec eax
|
||||||
jnz run_rdsave
|
jnz checkbox
|
||||||
; dec eax ; we have only one button left, this is close button
|
|
||||||
; jnz still
|
|
||||||
|
|
||||||
power_off:
|
power_off:
|
||||||
push 2
|
push 2
|
||||||
jmp mcall_and_close
|
jmp mcall_and_close
|
||||||
|
|
||||||
restart:
|
restart:
|
||||||
push 3
|
push 3
|
||||||
jmp mcall_and_close
|
jmp mcall_and_close
|
||||||
|
|
||||||
restart_kernel:
|
restart_kernel:
|
||||||
push 4
|
push 4
|
||||||
|
|
||||||
mcall_and_close:
|
mcall_and_close:
|
||||||
|
invoke ini_set_int,ini_file,asettings,aautosave,[autosave]
|
||||||
|
cmp [autosave],1
|
||||||
|
jne no_save
|
||||||
|
mcall 70,rdsave
|
||||||
|
test eax,eax
|
||||||
|
js no_save
|
||||||
|
mov ecx,eax
|
||||||
|
mcall 18,21
|
||||||
|
mov ecx,eax
|
||||||
|
@@:
|
||||||
|
push ecx
|
||||||
|
mcall 23,50
|
||||||
|
dec eax
|
||||||
|
jnz no_red
|
||||||
|
call draw_window
|
||||||
|
no_red:
|
||||||
|
pop ecx
|
||||||
|
mcall 9,proc_info
|
||||||
|
cmp [proc_info+50],9
|
||||||
|
je no_save
|
||||||
|
jmp @b
|
||||||
|
no_save:
|
||||||
pop ecx
|
pop ecx
|
||||||
mov al,18
|
mcall 18,9
|
||||||
mcall ,9
|
|
||||||
|
|
||||||
close_1:
|
close:
|
||||||
or eax,-1
|
mcall -1
|
||||||
mcall
|
|
||||||
|
|
||||||
run_rdsave:
|
checkbox:
|
||||||
mov al,70
|
btc dword [check1.flags],1
|
||||||
mcall ,rdsave
|
jc .1
|
||||||
jmp still
|
mov [autosave],1
|
||||||
|
jmp .draw
|
||||||
|
.1:
|
||||||
|
mov [autosave],0
|
||||||
|
.draw:
|
||||||
|
push dword check1
|
||||||
|
call [check_box_draw2]
|
||||||
|
jmp still
|
||||||
|
|
||||||
|
draw_window:
|
||||||
|
mov al,12
|
||||||
|
mcall ,1
|
||||||
|
|
||||||
|
mcall 14 ;eax=14 - get screen max x & max y
|
||||||
|
movzx ecx,ax
|
||||||
|
shr eax,17
|
||||||
|
shl eax,16
|
||||||
|
lea ebx,[eax-110 shl 16+222]
|
||||||
|
shr ecx,1
|
||||||
|
shl ecx,16
|
||||||
|
lea ecx,[ecx-70 shl 16+117]
|
||||||
|
|
||||||
|
xor eax,eax
|
||||||
|
mcall , , ,0x019098b0,0x01000000 ;define and draw window
|
||||||
|
|
||||||
|
mov al,13
|
||||||
|
mcall ,<0,223> ,<0,118>
|
||||||
|
mcall ,<1,221>,<1,116>,0xffffff
|
||||||
|
mcall ,<2,220>,<2,115>,0xe4dfe1
|
||||||
|
|
||||||
|
mov al,8
|
||||||
|
mcall ,<16,90> ,<20,27>,4,0x990022 ;eax=8 - draw buttons
|
||||||
|
mcall ,<113,90>, ,2,0xaa7700
|
||||||
|
mcall , ,<54,27>,1,0x777777
|
||||||
|
mcall ,<16,90> , ,3,0x007700
|
||||||
|
|
||||||
|
push dword check1
|
||||||
|
call [check_box_draw2]
|
||||||
|
|
||||||
|
mcall 4,<27,24> ,0x90ffffff,label2 ;eax=4 - write text
|
||||||
|
mcall ,<23,58> , ,label3
|
||||||
|
mcall ,<47,37> ,0x90ffffff,label5
|
||||||
|
mcall ,<44,71> , ,label6
|
||||||
|
|
||||||
|
mov al,12
|
||||||
|
mcall ,2
|
||||||
|
ret
|
||||||
|
|
||||||
data
|
data
|
||||||
include 'data.inc'
|
include 'data.inc'
|
||||||
|
|
||||||
udata
|
;---------------------------------------------------------------------
|
||||||
|
IM_END:
|
||||||
|
;---------------------------------------------------------------------
|
||||||
|
align 4
|
||||||
|
|
||||||
meos_app_end
|
proc_info rb 1024
|
||||||
|
|
||||||
|
autosave rd 1
|
||||||
|
;---------------------------------------------------------------------
|
||||||
|
cur_dir_path:
|
||||||
|
rb 4096
|
||||||
|
;---------------------------------------------------------------------
|
||||||
|
library_path:
|
||||||
|
rb 4096
|
||||||
|
;---------------------------------------------------------------------
|
||||||
|
align 32
|
||||||
|
rb 4096
|
||||||
|
stacktop:
|
||||||
|
I_END: ; ìåòêà êîíöà ïðîãðàììû
|
6
programs/system/rdsave/trunk/build_it.bat
Normal file
6
programs/system/rdsave/trunk/build_it.bat
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
@erase lang.inc
|
||||||
|
@echo lang fix it >lang.inc
|
||||||
|
@fasm rdsave.asm rdsave
|
||||||
|
@kpack rdsave
|
||||||
|
@erase lang.inc
|
||||||
|
@pause
|
File diff suppressed because it is too large
Load Diff
5
programs/system/rdsave/trunk/rdsave.ini
Normal file
5
programs/system/rdsave/trunk/rdsave.ini
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
[path]
|
||||||
|
path=/usbhdd0/1/kolibri.img
|
||||||
|
[settings]
|
||||||
|
autoclose=0
|
||||||
|
autosave=0
|
129
programs/system/rdsave/trunk/str.inc
Normal file
129
programs/system/rdsave/trunk/str.inc
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
; by ManHunter / PCL
|
||||||
|
; http://www.manhunter.ru
|
||||||
|
;-----------------------------------------------------
|
||||||
|
; ”ãªæ¨ï ¯®«ãç¥¨ï ¤«¨ë áâப¨ (Fast)
|
||||||
|
;-----------------------------------------------------
|
||||||
|
; lpStr - 㪠§ ⥫ì áâபã ASCIIZ
|
||||||
|
; <EFBFBD> ¢ë室¥: EAX - ¤«¨ áâப¨ ¡¥§ ãç¥â § ¢¥àè î饣®
|
||||||
|
; ã«¥¢®£® ¡ ©â
|
||||||
|
;-----------------------------------------------------
|
||||||
|
;proc _lstrlen lpStr:DWORD
|
||||||
|
; mov eax, [lpStr]
|
||||||
|
; sub eax, 4
|
||||||
|
;@@:
|
||||||
|
; add eax, 4
|
||||||
|
; cmp byte [eax], 0
|
||||||
|
; je .szlen_lb1
|
||||||
|
; cmp byte [eax+1], 0
|
||||||
|
; je .szlen_lb2
|
||||||
|
; cmp byte [eax+2], 0
|
||||||
|
; je .szlen_lb3
|
||||||
|
; cmp byte [eax+3], 0
|
||||||
|
; jne @b
|
||||||
|
; sub eax, [lpStr]
|
||||||
|
; add eax, 3
|
||||||
|
; ret
|
||||||
|
;.szlen_lb3:
|
||||||
|
; sub eax, [lpStr]
|
||||||
|
; add eax, 2
|
||||||
|
; ret
|
||||||
|
;.szlen_lb2:
|
||||||
|
; sub eax, [lpStr]
|
||||||
|
; add eax, 1
|
||||||
|
; ret
|
||||||
|
;.szlen_lb1:
|
||||||
|
; sub eax, [lpStr]
|
||||||
|
; ret
|
||||||
|
;endp
|
||||||
|
|
||||||
|
;-----------------------------------------------------
|
||||||
|
; ”ãªæ¨ï ¯®«ãç¥¨ï ¤«¨ë áâப¨
|
||||||
|
;-----------------------------------------------------
|
||||||
|
; lpStr - 㪠§ ⥫ì áâபã ASCIIZ
|
||||||
|
; <EFBFBD> ¢ë室¥: EAX - ¤«¨ áâப¨ ¡¥§ ãç¥â § ¢¥àè î饣®
|
||||||
|
; ã«¥¢®£® ¡ ©â
|
||||||
|
;-----------------------------------------------------
|
||||||
|
proc _lstrlen lpStr:DWORD
|
||||||
|
push edi ecx
|
||||||
|
|
||||||
|
cld
|
||||||
|
mov edi,[lpStr]
|
||||||
|
xor ecx,ecx
|
||||||
|
dec ecx
|
||||||
|
xor eax,eax
|
||||||
|
repne scasb
|
||||||
|
not ecx
|
||||||
|
dec ecx
|
||||||
|
mov eax,ecx
|
||||||
|
|
||||||
|
pop ecx edi
|
||||||
|
ret
|
||||||
|
endp
|
||||||
|
|
||||||
|
;-----------------------------------------------------
|
||||||
|
; ”ãªæ¨ï ¡ëáâண® ᫨ï¨ï ¤¢ãå áâப
|
||||||
|
; ¨á¯®«ì§ãîâáï äãªæ¨¨ _lstrlen, _lstrcpy
|
||||||
|
;-----------------------------------------------------
|
||||||
|
; lpDst - 㪠§ â¥«ì ¨á室ãî áâபã ASCIIZ
|
||||||
|
; lpSrc - 㪠§ â¥«ì ¤®¡ ¢«ï¥¬ãî áâபã ASCIIZ
|
||||||
|
;-----------------------------------------------------
|
||||||
|
proc _lstrcat lpDst:DWORD, lpSrc:DWORD
|
||||||
|
pusha
|
||||||
|
|
||||||
|
stdcall _lstrlen,[lpDst]
|
||||||
|
add eax,[lpDst]
|
||||||
|
|
||||||
|
stdcall _lstrcpy,eax,[lpSrc]
|
||||||
|
|
||||||
|
popa
|
||||||
|
ret
|
||||||
|
endp
|
||||||
|
|
||||||
|
;-----------------------------------------------------
|
||||||
|
; ”ãªæ¨ï ¡ëáâண® ª®¯¨à®¢ ¨ï áâப¨
|
||||||
|
; ¨á¯®«ì§ãîâáï äãªæ¨¨ _lstrlen, _memcopy
|
||||||
|
;-----------------------------------------------------
|
||||||
|
; lpDst - 㪠§ â¥«ì ¯à¨¥¬¨ª
|
||||||
|
; lpSrc - 㪠§ ⥫ì áâபã ASCIIZ
|
||||||
|
;-----------------------------------------------------
|
||||||
|
proc _lstrcpy lpDst:DWORD, lpSrc:DWORD
|
||||||
|
pusha
|
||||||
|
|
||||||
|
stdcall _lstrlen,[lpSrc]
|
||||||
|
inc eax
|
||||||
|
stdcall _memcopy,[lpDst],[lpSrc],eax
|
||||||
|
|
||||||
|
popa
|
||||||
|
ret
|
||||||
|
endp
|
||||||
|
|
||||||
|
;-----------------------------------------------------
|
||||||
|
; ”ãªæ¨ï ¡ëáâண® ª®¯¨à®¢ ¨ï ãç á⪠¯ ¬ïâ¨
|
||||||
|
;-----------------------------------------------------
|
||||||
|
; lpDst - 㪠§ â¥«ì ¯à¨¥¬¨ª
|
||||||
|
; lpSrc - 㪠§ â¥«ì ¨áâ®ç¨ª
|
||||||
|
; dSize - à §¬¥à ª®¯¨à㥬®£® ¡«®ª
|
||||||
|
;-----------------------------------------------------
|
||||||
|
proc _memcopy lpDst:DWORD, lpSrc:DWORD, dSize:DWORD
|
||||||
|
pusha
|
||||||
|
|
||||||
|
; “áâ ®¢¨âì 㪠§ ⥫¨ ¨áâ®ç¨ª ¨ ¯à¨¥¬¨ª
|
||||||
|
cld
|
||||||
|
mov edi,[lpDst]
|
||||||
|
mov esi,[lpSrc]
|
||||||
|
|
||||||
|
mov ecx,[dSize]
|
||||||
|
push ecx
|
||||||
|
; <EFBFBD> §¤¥«¨âì 4 ¨ ¯®«ãç¨âì ¤«¨ã ¢ DWORD
|
||||||
|
shr ecx,2
|
||||||
|
; ‘ª®¯¨à®¢ âì ®á®¢ãî ç áâì áâப¨ DWORD' ¬¨
|
||||||
|
rep movsd
|
||||||
|
pop ecx
|
||||||
|
; <EFBFBD>®«ãç¨âì ®áâ ⮪ ®â ¤¥«¥¨ï 4
|
||||||
|
and ecx,3
|
||||||
|
; ‘ª®¯¨à®¢ âì ®áâ ⮪ áâப¨ ¡ ©â ¬¨
|
||||||
|
rep movsb
|
||||||
|
|
||||||
|
popa
|
||||||
|
ret
|
||||||
|
endp
|
Loading…
Reference in New Issue
Block a user