Сейчас на форуме: r0lka, yashechka (+5 невидимых)

 eXeL@B —› Крэки, обсуждения —› Программинг для DOS
Посл.ответ Сообщение

Ранг: 29.0 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 26 августа 2005 09:33
· Личное сообщение · #1

Короче проблема: выделяю память, читаю туда файл, записываю от туда файл , файлы отличаются - почему? может кто поможет? кусок кода ниже
mov ax, 0x06
mov bx, ax
mov ah, 48h
int 21h
jc err_mem
mov word ptr cs:[handlemem],ax
mov ds, ax
mov ax, 3f00h
mov bx, word ptr cs:[HandleOpen]
xor dx, dx
mov cx, word ptr cs:[Len+2]
int 21h

xor dx, dx
mov ah, 40h
mov bx, word ptr cs:[HandleCrea]
mov ds, word ptr cs:[handlemem]
mov cx, Word ptr cs:[Len+2]
int 21h




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 26 августа 2005 11:57
· Личное сообщение · #2

Может быть ошибка с выделением памяти - самая первая строка?



Ранг: 495.3 (мудрец)
Активность: 0.30
Статус: Участник

Создано: 26 августа 2005 12:50
· Личное сообщение · #3

А что 3f возвращает? AX должен быть равен CX.
И ещё меня смущает это «Len+2».
Ты бы файлик приложил, таракана бы нашли сразу.

-----
Всем привет, я вернулся




Ранг: 29.0 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 26 августа 2005 13:07
· Личное сообщение · #4

Лови... те
только не смейтесь это для девушки на работе

9415_cript.asm



Ранг: 29.0 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 26 августа 2005 13:08
· Личное сообщение · #5

Ara пишет:
Может быть ошибка с выделением памяти - самая первая строка?

не а в отладчике проверял усе нормально выделяет сколько надо, в AX сегментный указательна выделеный буффер.



Ранг: 495.3 (мудрец)
Активность: 0.30
Статус: Участник

Создано: 26 августа 2005 17:48
· Личное сообщение · #6

neyron пишет:
только не смейтесь это для девушки на работе

Да зачем же смеяться, все мы чайники.
Только я не понял, как оно должно работать.
Вроде бы это исходник для com-файла? Хотя здесь что exe, что com – один хрен.
Я собрал его TASM’ом запустил в отладчике и сразу обломался.
0187 BA5D00         MOV       DX,005D  ; должно быть видимо 82h?
018A B43D           MOV       AH,3D
018C 33C9           XOR       CX,CX
018E CD21           INT       21


Но и 82h не прокатит.

Если у тебя нет хорошей доки по DOS ищи:
«Tech Help» - 800kb и
«RBIL» - 2.5Mb
Найти не сложно.
От туда сразу узнаём:
+80H      1  bCmdTailLen  count of characters in command tail at 81H (also
                          default setting for the DTA)
+81H     127 abCmdTail    characters from DOS command line
         256              size of a PspRec structure

Ну а +82h как раз и есть аргумент командной строки.
Только он не ASCIIz, то есть без нуля.
Значит, нужно сначала получить переменную с именем файла и нулём на конце, желательно при этом иметь полный путь.

Если я чего не понял - объясните.

-----
Всем привет, я вернулся



 eXeL@B —› Крэки, обсуждения —› Программинг для DOS
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати