попробуйте следующий код в качестве отправной точки
@echo off
copy %1 temp.txt
echo d >debug.tmp
echo r >>debug.tmp
echo a >>debug.tmp
echo dec cx >>debug.tmp
echo dec cx >>debug.tmp
echo. >>debug.tmp
echo g =100 102 >>debug.tmp
echo w >>debug.tmp
echo q >>debug.tmp
debug temp.txt <debug.tmp
Этот пакет сначала копирует файл во временный файл, который должен иметь имя 8.3.
Затем он подготавливает сценарий отладки, чтобы отрубить последние два байта временного файла.
Первые две команды отладки R
и D
предназначены только для отображения содержимого файла и регистра (с важным значением CX, содержащим длину файла). Их можно удалить.
Затем сценарий отладки переходит в режим ассемблера A
и выдает две DEC CX
инструкции, которые уменьшают вдвое значение CX.Пустая строка выходит из режима ассемблера.
Сценарий выполняет G
две инструкции по сборке.
Затем сценарий отладки записывает W
обратно в файл то же прочитанное содержимое, минус два байтав длину.И, наконец, выходит Q
debug.
Этот код работает только с файлами размером менее 64 КБ.Для больших файлов вам нужно расширить код сборки, проверяя флаг переноса после уменьшения CX до уменьшения BX.
Для получения дополнительной информации прочитайте DEBUG /?
, а затем попробуйте DEBUG
и ?