Нужна Ваша помощь!

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Нужна Ваша помощь!

Andy » 05 мар 2005, 23:17

А в MASM-е есть ф-ция lstrcat?
lstrcat - это функция WinAPI.
Чем, кроме имени импортируемого либа и обьявления API, код будет отличаться для MASM?
Да вобщем-то ничем...

Xen0n » 05 мар 2005, 23:17

Всё работает! Огромное СПАСИБО!

Xen0n » 05 мар 2005, 22:57

Спасибо, Andy! А в MASM-е есть ф-ция lstrcat?
Чем, кроме имени импортируемого либа и обьявления API, код будет отличаться для MASM?

Andy » 05 мар 2005, 22:39

1. Даем осмысленные названия темам!
2. Используем ВВ-теги Почему не работает разиратся не буду. На первый взгляд правильно. Правда имя программы можно взять относительное - без каталога.

Мой вариант:

Код: Выделить всё

	.386
	.model flat
	.data

WindowsDirectoryBufferSize	equ 64

szApplicationError	db "Error!!!",0
szFileName		db "123.exe",0
szSlash			db "\",0
lpszWindowsDir		db WindowsDirectoryBufferSize dup(0)

	.code
	
includelib import32.lib

extrn	CopyFileA:near
extrn	ExitProcess:near
extrn	GetWindowsDirectoryA:near
extrn	MessageBoxA:near
extrn	lstrcat:near

_start:
	push	WindowsDirectoryBufferSize
	push	offset lpszWindowsDir
	call	GetWindowsDirectoryA
	
	or	eax,eax
	jz	AppError
	
	
	push	offset szSlash
	push	offset lpszWindowsDir
	call	lstrcat
	
	push	offset szFileName
	push	offset lpszWindowsDir
	call	lstrcat
	
	push	0
	push	offset lpszWindowsDir
	push	offset szFileName
	call	CopyFileA
	
	or	eax,eax
	jnz	ExitApp
	
AppError:
	push	10h
	push	offset szApplicationError
	push	offset szApplicationError
	push	0
	call	MessageBoxA
ExitApp:
	push	0
	call	ExitProcess
end	_start

Нужна Ваша помощь!

Xen0n » 05 мар 2005, 14:58

Помогите, пожалуйста, разобраться, почему не работает прога. Вот есть такой код:
;-----------------------------------------------------------------------------
sized equ 256
cur_dir db sized dup(0)
win_dir db sized dup(0)
mix db '\123.exe',0
;…
assume ds:_DATA,es:_DATA

push offset cur_dir
push sized
call GetCurrentDirectoryA

test eax,eax
jz ex1t

cld
lea esi,mix
lea edi,cur_dir
add edi,eax
mov ecx,8
rep movsb

push sized
push offset win_dir
call GetWindowsDirectoryA

test eax,eax
jz ex1t

cld
lea esi,mix
lea edi,win_dir
add edi,eax
mov ecx,8
rep movsb

push 0
push offset cur_dir
push offset win_dir

call CopyFileA
;-----------------------------------------------------------------------
Этот код должен копировать эту же прогу под именем 123.exe у Win-директорию. Исходное имя программы тоже 123.exe.

Вернуться к началу