Программа-«переводчик». Дизассемблер

Программа-«переводчик». Дизассемблер

Часто перед программистом возникает задача: по машинным кодам восстановить текст программы на Ассемблере. Это может потребоваться, например, для того, чтобы внести в программу изменения или дополнения или оттранслировать ее для работы в другой области памяти. Выполнять такую работу вручную крайне утомительно, и потому лучше поручить ее компьютеру.

Вниманию читателей предлагается программа «Дизассемблер», с помощью которой микроЭВМ быстро и без ошибок переведет программу в машинных кодах на язык Ассемблера, расставит метки и, при необходимости, уберет адреса. Эта программа является версией Дизассемблера ПЭВМ «Радио-86РК», адаптированной для «Специалиста».

Дизассемблер работает совместно с Редактором и располагает текст дизассемблируемой программы в его текстовом буфере. Сам Дизассемблер располагается в памяти на месте Ассемблера, занимая адреса с 0800Н по 0FFFH.

Рассмотрим порядок работы с Дизассемблером. Прежде всего необходимо поместить дизассемблируемую программу в рабочую область Дизассемблера, которая занимает адресное пространство с 1200Н по 2FFFH. Затем запустить Дизассемблер командой Монитора G800 или Редактора нажатием клавиши <СТР>.

Дизассемблер имеет три директивы: D — дизассемблирование, М — расстановка меток и А — удаление адресов. После ввода директивы D на экране появляется запрос «Рабочий адрес:», на него надо ответить вводом четырехзначного адреса начала области ОЗУ, в которой работает дизассемблируемая программа. Затем на экране появится вопрос «Текст (Y/N)?». Если текст в программе есть, отвечаем Y, если нет — N. На ваш ответ Y на экран выводятся запросы «Начало:» и «Конец:», на них надо отвечать вводом четырехзначных шестнадцатеричных адресов.

После ввода всех областей, где расположен текст, на очередной запрос «Начало:» следует ответить нажатием клавиши <ВК>, и на экране появится вопрос «NEW (Y/N)?». При ответе Y буфер текста будет очищен, при ответе N вновь создаваемый текст будет расположен после имеющегося.

Программа-«переводчик». Дизассемблер

Затем на экран будет выведен запрос «Адрес:». В ответ следует ввести четырехзначный адрес, с которого вы хотите начать дизассемблирование. После этого на экран выводятся 24 строки дизассемблированного фрагмента и вопрос «Текст (Y/N)?». При ответе Y этот фрагмент будет занесен в буфер текста, и дизассемблирование будет продолжено. При ответе N дизассемблирование продолжится, но без занесения отображенного на экране фрагмента в буфер текста. При нажатии клавиши (СТР) дизассемблирование прекратится также без занесения фрагмента в буфер. На экране появится запрос «Адрес?», на него можно ответить вводом нового адреса для дизассемблирования или повторным нажатием клавиши (СТР) завершить работу директивы D.

Теперь можно расставить метки директивой М. Программа выдаст запрос «Символ:». Введенный вами символ будет использован в качестве первой буквы меток, два других символа — двухзначное шестнадцатеричное число от 00 до FF.

После этого можно ввести директиву А для удаления адресов. Полученная программа может быть вновь оттранслирована Ассемблером.

Отметим, что на любом этапе работы можно перейти в Редактор, нажав клавишу (СТР). Редактировать программу надо осторожно, поскольку директива М работает с позиционированными строками текста. Например, если числовой операнд трехбайтовой команды будет смещен в любую сторону на любое число позиций, то он не заменится на метку. Директива А тоже имеет особенность. Она удаляет четыре первых символа в строке, начинающейся с цифры или букв А, В, С, D, Е, F. Следовательно, если вы поставите в начале строки метку, имеющую в качестве первой буквы любую из указанных, то первые четыре символа этой метки будут удалены.

Коды программы Дизассемблера приведены в таблице 1. Данная версия рассчитана для компьютера «Специалист» с ОЗУ 48К. В таблице 2 приведены адреса ячеек памяти, содержимое которых надо изменить для ОЗУ 32К (там же указаны изменения для Редактора). Таблица меток для той и другой версии располагается на адресах 8000Н—8200Н. Буфер текста Редактора для версии 32К начинается с адреса 1А00Н.

В. ЗВЕРКОВ

Рекомендуем почитать

  • В КОПИЛКЕ — ШАЙБЫВ КОПИЛКЕ — ШАЙБЫ
    В одной из подборок советов (см. «М-К» № 2 за 1983 г.) меня привлекла полочка из консервных банок. Дело в том, что я сам уже два года с успехом пользуюсь подобной многоярусной «копилкой»...
  • С КРАСИВОЙ ГОЛОВКОЙС КРАСИВОЙ ГОЛОВКОЙ
    Уже много всяких советов было по использованию колпачков и крышек от ненужных пузырьков и тюбиков. Вот еще один — получение красивых фигурных головок у болтов или гаек. Посмотрите на...
Тут можете оценить работу автора: