Старая программа DEBUG может загружать COM-файлы, которые имеют размер более 64 Кб, но это не означает, что она загружает их как программы

Некоторое время назад я писал о том, почему поврежденные бинарные файлы иногда приводят к ошибке «Программа не умещается в памяти». Комментатор Нил был очень впечатлен тем, что неперемещаемые программы могут быть больше 64 Кб, и использовал команду DEBUG, чтобы проверить это предположение.

Несмотря на то, что программа DEBUG может загружать файлы, которые имеют размер более 64 Кб, это не означает, что они загружаются как программы. Если программа DEBUG решает, что вы передали ей файл, не являющийся программой (расширение файла отлично от EXE или COM)¹, то она обрабатывает файл, переданный в аргументах командной строки, как файл с данными и загружает его в память целиком, конечно, при условии что он помещается в память целиком. После загрузки в регистре BX будет храниться старшие 16 бит размера файла, а в CX — младшие 16 бит. Есть также аналогичный специальный режим для записи файлов: используйте команду n для указания имени выходного файла и установите значение BX:CX, равное размеру файла.

И, несмотря на то, что программа DEBUG уже более десятилетия считается устаревшей, она все еще может использоваться в качестве шестнадцатеричного редактора для файлов, не превышающих, примерно, 512 Кб.

Но не вводите себя в заблуждение, считая, что вы создали COM-файл, размером более 64 Кб.

¹Есть еще одно расширение файла, которое имеет специальное значение для программы DEBUG, но это выходит за рамки темы данного обсуждения.