Проблема.
В каталоге Folder1 есть файл test.exe - десктопное приложение windows.
Его скопировали в каталог Folder2, переименовали в test.txt. После этого его открыли в текстовом редакторе и добавили ему в начало текстовую строку из 32 символов (с учётом символа перехода на новую строку перед содержимым exe-файла 33 символа). После этого программой test.com в каталоге Folder2 перекопировали содержимое файла test.txt, начиная с 33-его байта в файл test.exe.
Вот программа test.com
.286
.model tiny
.code
org 100h
begin:
mov ax, 3d02h
xor cx, cx;
lea dx, ifilename
int 21h
mov ifiledescriptor, ax;
mov ah, 42h;
mov bx, ifiledescriptor;
mov al, 00h;
mov cx, 0000h
mov dx, 33
int 21h
mov ah, 3ch
xor cx, cx
mov dx, offset ofilename
int 21h
mov ofiledescriptor, ax;
start:
mov ax, 4406h
mov bx, ifiledescriptor
int 21h
or al, al
je exit
mov ah, 3fh
mov bx, ifiledescriptor
mov cx, 0001h
mov dx, offset symbol
int 21h
mov ah, 40h
mov bx, ofiledescriptor
mov cx, 0001h
mov dx, offset symbol
int 21h
jmp start
exit:
mov ax, 4c00h
int 21h
ifilename db "test.txt",0
ofilename db "test.exe",0
ifiledescriptor dw (?)
ofiledescriptor dw (?)
symbol db (?)
end begin
Com-файл из неё делаю так
tasm.exe test.asm
tlink.exe test.obj /t
Теперь мы в каталоге Folder2 получили файл test.exe с точно таким же содержимым, что и test.exe в каталоге Folder1. Но беда: и называются файлы одинаково, и содержимое у них одинаковое, да только это разные файлы!!! И когда я пытаюсь запустить на выполнение файл test.exe в каталоге folder2 вместо декстопного приложений windows выскакивает досовское текстовое окошко с сообщением "Program too big to fit in memory". Я думаю, что это из за того, что файл создавался обработчиком прерывания DOS - досовский файл.
И теперь большой вопрос. Как перекопировать содержимое файла test.txt в test.exe, начиная с 33-его символа, чтобы оно запустился, как десктопное приложение windows???