<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://emuverse.ru/w/index.php?action=history&amp;feed=atom&amp;title=%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE-86%D0%A0%D0%9A%2F%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE_03-88%2F%D0%94%D0%B8%D0%B7%D0%B0%D1%81%D1%81%D0%B5%D0%BC%D0%B1%D0%BB%D0%B5%D1%80</id>
	<title>Радио-86РК/Радио 03-88/Дизассемблер - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://emuverse.ru/w/index.php?action=history&amp;feed=atom&amp;title=%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE-86%D0%A0%D0%9A%2F%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE_03-88%2F%D0%94%D0%B8%D0%B7%D0%B0%D1%81%D1%81%D0%B5%D0%BC%D0%B1%D0%BB%D0%B5%D1%80"/>
	<link rel="alternate" type="text/html" href="https://emuverse.ru/w/index.php?title=%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE-86%D0%A0%D0%9A/%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE_03-88/%D0%94%D0%B8%D0%B7%D0%B0%D1%81%D1%81%D0%B5%D0%BC%D0%B1%D0%BB%D0%B5%D1%80&amp;action=history"/>
	<updated>2026-05-04T05:26:06Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://emuverse.ru/w/index.php?title=%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE-86%D0%A0%D0%9A/%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE_03-88/%D0%94%D0%B8%D0%B7%D0%B0%D1%81%D1%81%D0%B5%D0%BC%D0%B1%D0%BB%D0%B5%D1%80&amp;diff=1004&amp;oldid=prev</id>
		<title>Panther: http://retro.h1.ru/RK86/Edit/DizAsm.php</title>
		<link rel="alternate" type="text/html" href="https://emuverse.ru/w/index.php?title=%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE-86%D0%A0%D0%9A/%D0%A0%D0%B0%D0%B4%D0%B8%D0%BE_03-88/%D0%94%D0%B8%D0%B7%D0%B0%D1%81%D1%81%D0%B5%D0%BC%D0%B1%D0%BB%D0%B5%D1%80&amp;diff=1004&amp;oldid=prev"/>
		<updated>2008-07-14T08:26:00Z</updated>

		<summary type="html">&lt;p&gt;http://retro.h1.ru/RK86/Edit/DizAsm.php&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{ДИ|Автор= В. БАРЧУКОВ, Е. ФАДЕЕВ|Источник=http://retro.h1.ru/RK86/Edit/DizAsm.php}}&lt;br /&gt;
&lt;br /&gt;
Опубликованный пакет программ «Микрон» позволяет создавать прикладные&lt;br /&gt;
программы на языке АССЕМБЛЕРА, однако нередко перед радиолюбителем возникает&lt;br /&gt;
и обратная задача — по имеющимся кодам какой-либо программы воссоздать (дизассемблировать)&lt;br /&gt;
ее текст на языке АССЕМБЛЕРА. Дизассемблирование может потребоваться, например,&lt;br /&gt;
в случае утери первоначального исходного текста программы, для анализа и дополнения&lt;br /&gt;
новыми возможностями программ, написанных другими программистами, для переноса&lt;br /&gt;
рабочей области программы в другую область ОЗУ…&lt;br /&gt;
&lt;br /&gt;
Между символическими командами языка АССЕМБЛЕРА и кодами машинах&lt;br /&gt;
команд существует взаимно однозначное соответствие, поэтому, имея таблицу кодов&lt;br /&gt;
команд микропроцессора, любую программу можно дизассемблировать вручную. Многие&lt;br /&gt;
радиолюбители, чтобы понять, как работают программы, опубликованные в журнале,&lt;br /&gt;
видимо, этим уже занимались и на собственном опыте убедились, сколь продолжителен&lt;br /&gt;
и кропотлив этот труд.&lt;br /&gt;
&lt;br /&gt;
Имея в руках такого помощника, как персональный компьютер, эту&lt;br /&gt;
работу можно возложить на него, загрузив предварительно в его память программу&lt;br /&gt;
ДИЗАССЕМБЛЕР. Она позволит с минимальными затратами времени создать текст любой&lt;br /&gt;
программы на языке АССЕМБЛЕРА, который, естественно, в дальнейшем может быть&lt;br /&gt;
оттранслирован с помощью АССЕМБЛЕРА ASSM. *МИКРОН*.&lt;br /&gt;
&lt;br /&gt;
В табл.1 приведены [[/EditDasm.txt|машинные коды]] нового&lt;br /&gt;
пакета программ «МИКРОН» который состоит из улучшенной версии РЕДАКТОРА ED.&amp;quot;МИКРОН&amp;quot;&lt;br /&gt;
и ДИЗАССЕМБЛЕРА DIS. «МИКРОН». Каждая из этих программ&lt;br /&gt;
занимает 2 Кбайт памяти и может работать независимо друг от друга. Новую версию&lt;br /&gt;
РЕДАКТОРА можно объединить с АССЕМБЛЕРОМ ASSM.&amp;quot;МИКРОН&amp;quot;, заменив коды старого&lt;br /&gt;
редактора на новые. Сделать это лучше следующим образом: пользуясь директивой&lt;br /&gt;
М МОНИТОРА, введите в ОЗУ компьютера коды из табл.1 блоками по 256 Байт с последующей&lt;br /&gt;
записью их на магнитную ленту и сверкой контрольной суммы записанного блока&lt;br /&gt;
с контрольной суммой соответствующего блока из табл.2.&lt;br /&gt;
&lt;br /&gt;
Таблица 2.&lt;br /&gt;
&lt;br /&gt;
{| class=border&lt;br /&gt;
|-&lt;br /&gt;
| ОБЛАСТЬ ОЗУ || КОНТР. СУММА || ОБЛАСТЬ ОЗУ || КОНТР. СУММА&lt;br /&gt;
|-&lt;br /&gt;
| 0000 — 00FF&amp;lt;br /&amp;gt;&lt;br /&gt;
0100 — 01FF&amp;lt;br /&amp;gt;&lt;br /&gt;
0200 — 02FF &amp;lt;br /&amp;gt;&lt;br /&gt;
0300 — 03FF &amp;lt;br /&amp;gt;&lt;br /&gt;
0400 — 04FF &amp;lt;br /&amp;gt;&lt;br /&gt;
0500 — 05FF&amp;lt;br /&amp;gt;&lt;br /&gt;
0600 — 06FF&amp;lt;br /&amp;gt;&lt;br /&gt;
0700 — 07FF&lt;br /&gt;
| 1D46 &amp;lt;br /&amp;gt;&lt;br /&gt;
6F40 &amp;lt;br /&amp;gt;&lt;br /&gt;
5E2F &amp;lt;br /&amp;gt;&lt;br /&gt;
CE8F &amp;lt;br /&amp;gt;&lt;br /&gt;
8D43 &amp;lt;br /&amp;gt;&lt;br /&gt;
8826 &amp;lt;br /&amp;gt;&lt;br /&gt;
98AD&amp;lt;br /&amp;gt;&lt;br /&gt;
32EB&lt;br /&gt;
| 0800 — 08FF &amp;lt;br /&amp;gt;&lt;br /&gt;
0900 — 09FF &amp;lt;br /&amp;gt;&lt;br /&gt;
0A00 — 0AFF &amp;lt;br /&amp;gt;&lt;br /&gt;
0B00 — 0bff &amp;lt;br /&amp;gt;&lt;br /&gt;
0C00 — 0CFF &amp;lt;br /&amp;gt;&lt;br /&gt;
0D00 — 0DFF &amp;lt;br /&amp;gt;&lt;br /&gt;
0E00 — 0EFF &amp;lt;br /&amp;gt;&lt;br /&gt;
0F00 — 0FFF&lt;br /&gt;
| 2BC4 &amp;lt;br /&amp;gt;&lt;br /&gt;
CB8B &amp;lt;br /&amp;gt;&lt;br /&gt;
9430 &amp;lt;br /&amp;gt;&lt;br /&gt;
C777 &amp;lt;br /&amp;gt;&lt;br /&gt;
733Е &amp;lt;br /&amp;gt;&lt;br /&gt;
3F30 &amp;lt;br /&amp;gt;&lt;br /&gt;
A617 &amp;lt;br /&amp;gt;&lt;br /&gt;
E762&lt;br /&gt;
|-&lt;br /&gt;
| 0000 — 0FFF || 5422 || &amp;amp;nbsp; || &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Затем загружают последовательно все блоки с магнитной ленты&lt;br /&gt;
в ОЗУ компьютера. В результате в ОЗУ окажется полный пакет с РЕДАКТОРОМ и ДИЗАССЕМБЛЕРОМ.&lt;br /&gt;
Если теперь записать на магнитную ленту только новый РЕДАКТОР (он располагается&lt;br /&gt;
в памяти по адресам 0000Н — 7FFH), то, загрузив старый пакет «МИКРОН», а затем&lt;br /&gt;
новый РЕДАКТОР, вы получите новый пакет с РЕДАКТОРОМ и АССЕМБЛЕРОМ.&lt;br /&gt;
&lt;br /&gt;
Чтобы разобраться, как работать с пакетом программ DIS. «МИКРОН»&lt;br /&gt;
проследим процесс дизассемблирования какой-либо программы, так сказать, «вручную».&lt;br /&gt;
Он состоит из двух основных этапов: собственно дизассемблирования и расстановки&lt;br /&gt;
меток. Дизассемблируя программу, обычно записывают в столбик сначала адрес команды,&lt;br /&gt;
затем код операции с необходимыми операндами и, наконец, мнемоническое обозначение&lt;br /&gt;
команды (адреса, конечно, можно и не записывать, но при последующей расстановке&lt;br /&gt;
меток это может привести к путанице). Записав, таким образом, текст программы,&lt;br /&gt;
для более удобного чтения и понимания алгоритма ее работы, вместо абсолютных&lt;br /&gt;
адресов переходов нужно расставить метки. После всех этих операций текст программы&lt;br /&gt;
(но, естественно, без адресов) можно с помощью РЕДАКТОРА (предварительно отредактировав,&lt;br /&gt;
внеся в него пояснения или дополнения) ввести в компьютер и оттранслировать&lt;br /&gt;
АССЕМБЛЕРОМ.&lt;br /&gt;
&lt;br /&gt;
Всю описанную выше работу может выполнить DIS. «МИКРОН» во много&lt;br /&gt;
раз быстрее и точнее, создавая текст дизассемблируемой программы непосредственно&lt;br /&gt;
в области ОЗУ, отведенной для буфера текста редактора ED.&amp;quot;МИКРОН&amp;quot;. Программа&lt;br /&gt;
DIS. «МИКРОН» также как и АССЕМБЛЕР, используется вместе с РЕДАКТОРОМ и располагается&lt;br /&gt;
в памяти на месте АССЕМБЛЕРА, то есть с адреса 800Н по FFFH. Так же, как и ранее,&lt;br /&gt;
переход из РЕДАКТОРА в ДИЗАССЕМБЛЕР и наоборот осуществляется нажатием клавиши&lt;br /&gt;
СТР. В МОНИТОР можно выйти только из РЕДАКТОРА, нажав клавиши УС и Е.&lt;br /&gt;
&lt;br /&gt;
Прежде чем приступать к дизассемблированию программы, необходимо&lt;br /&gt;
ее коды поместить в область ОЗУ, которая для АССЕМБЛЕРА являлась областью трансляции&lt;br /&gt;
и расположена с адреса 1100Н. Перемещение производят директивой Т МОНИТОРА,&lt;br /&gt;
после чего можно приступить к дизассемблированию.&lt;br /&gt;
&lt;br /&gt;
При входе в ДИЗАССЕМБЛЕР (из МОНИТОРА по директиве G800, а из&lt;br /&gt;
РЕДАКТОРА нажатием клавиши СТР) на экране появляется сообщение:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DIS.*МИКРОН* КОНЕЦ ТЕКСТА...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вместо точек будет выведено шестнадцатеричное число, соответствующее&lt;br /&gt;
адресу конца текста в буфере. Эта информация необходима для определения свободного&lt;br /&gt;
места в области ОЗУ, отводимой под текст и определяемой как разность адреса&lt;br /&gt;
настройки указателя стека (73FFH) и адреса конца текста. Затем появляется символ&lt;br /&gt;
«*», приглашающий оператора ввести директиву ДИЗАССЕМБЛЕРА. Их всего четыре:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* D — дизассемблирование,&lt;br /&gt;
* М — расстановка меток в дизассемблированном тексте,&lt;br /&gt;
* А — удаление из текста адресов и&lt;br /&gt;
* СТР — выход в РЕДАКТОР.&lt;br /&gt;
&lt;br /&gt;
После задания директивы D на экран выводится запрос «РАБОЧИЙ&lt;br /&gt;
АДРЕС», на который нужно ответить вводом полного шестнадцатеричного адреса (со&lt;br /&gt;
всеми незначащими нулями) той области ОЗУ, в которой работает дизассемблируемая&lt;br /&gt;
программа. Если при вводе адреса будет нажата клавиша, не соответствующая шестнадцатеричной&lt;br /&gt;
цифре, то запрос ввода адреса будет повторен, а если клавиша СТР, то ДИЗАССЕМБЛЕР&lt;br /&gt;
перейдет в режим ожидания ввода директив.&lt;br /&gt;
&lt;br /&gt;
Далее на экране дисплея появится запрос ТЕКСТ (Y/N)? Что это&lt;br /&gt;
означает? Дело в том, что в большинстве программ, кроме непосредственно кодов&lt;br /&gt;
операций и операндов, присутствуют какие-либо данные. Ими могут быть подготовленные&lt;br /&gt;
программистом заранее и расположенные в теле программы строковые константы,&lt;br /&gt;
таблицы и т. п. Адреса, в которых расположены строковые константы, можно найти,&lt;br /&gt;
воспользовавшись директивой L МОНИТОРА. (Следует отметить, что определить адреса&lt;br /&gt;
таблиц и т. п. не всегда бывает просто — для этого может потребоваться многократное&lt;br /&gt;
дизассемблирование программы и ее детальный анализ). Определив каким-либо образом&lt;br /&gt;
эти области, на запрос ТЕКСТ (Y/N)? следует ответить нажатием клавиши Y, и на&lt;br /&gt;
последующие запросы НАЧАЛО: и КОНЕЦ: вводом адреса начала и конца областей данных&lt;br /&gt;
(DIS. «МИКРОН» позволяет определить до 32 областей данных).&lt;br /&gt;
&lt;br /&gt;
После определения всех областей нужно на очередной запрос НАЧАЛО:&lt;br /&gt;
ответить нажатием клавиши ВК (тем самым будет закончено их определение), и на&lt;br /&gt;
экране появится запрос NEW (Y/N)? Ответ Y приведет к очистке буфера текста,&lt;br /&gt;
и текст будет создаваться сначала. Любой другой ответ сохранит имеющийся в буфере&lt;br /&gt;
текст, а вновь создаваемый пристыкует к нему (в некоторых случаях это может&lt;br /&gt;
оказаться полезным).&lt;br /&gt;
&lt;br /&gt;
После всех этих процедур остается на запрос АДРЕС: ввести полный&lt;br /&gt;
адрес начала дизассемблируемого фрагмента (Адрес вводят АБСОЛЮТНЫЙ, то есть соответствующий&lt;br /&gt;
той области памяти, в которой работает дизассемблируемая программа). Как только&lt;br /&gt;
адрес будет введен, на экране появятся 24 строки дизассемблированного фрагмента,&lt;br /&gt;
причем формат строки будет таким: сначала выводятся четыре символа адреса кода&lt;br /&gt;
операции, затем четыре пробела (на их место в дальнейшем могут быть поставлены&lt;br /&gt;
метки), следующие четыре позиции отводятся под мнемонику команды и одна позиция&lt;br /&gt;
на разделительный пробел, за которым располагаются операнды (если они имеются&lt;br /&gt;
в данной команде). О таком позиционировании следует помнить при редактировании&lt;br /&gt;
дизассемблированного текста. В случае его нарушения директивы М и А дизассемблера&lt;br /&gt;
могут выполниться не полностью.&lt;br /&gt;
&lt;br /&gt;
Вывод фрагмента всегда заканчивается вопросом ТЕКСТ (Y/N)? Нажатие&lt;br /&gt;
клавиши Y приведет к записи этого фрагмента в буфер текста и дизассемблированию&lt;br /&gt;
следующей части программы. При нажатии клавиши N или любой другой (кроме СТР)&lt;br /&gt;
дизассемблированный фрагмент в буфер текста записан не будет, но дизассемблирование&lt;br /&gt;
следующего фрагмента произойдет. Если нажать клавишу СТР, то дизассемблированный&lt;br /&gt;
фрагмент в буфер текста записан не будет и последовательное дизассемблирование&lt;br /&gt;
также будет прекращено. На экране появится запрос АДРЕС?, в ответ на который&lt;br /&gt;
можно ввести новое значение адреса, с которого следует вести дизассемблирование.&lt;br /&gt;
или нажать еще раз клавишу СТР для завершения работы директивы D.&lt;br /&gt;
&lt;br /&gt;
После ввода директивы М дизассемблер выдает запрос СИМВОЛ:, требующий&lt;br /&gt;
ввода символа (буква латинского алфавита), который будет использован в качестве&lt;br /&gt;
первого в именах всех расставляемых в тексте меток, два других символа — двухразрядное&lt;br /&gt;
шестнадцатеричное число от 00 до 0FFH. Таким образом, максимальное число меток,&lt;br /&gt;
которое может быть расставлено ДИЗАССЕМБЛЕРОМ, — 256. Если при выполнении директивы&lt;br /&gt;
М количество меток превысит эту величину, то будет выведено сообщение МНОГО&lt;br /&gt;
МЕТОК и работа директивы М прекратится. В этом случае можно разбить программу&lt;br /&gt;
на части и вновь провести дизассемблирование.&lt;br /&gt;
&lt;br /&gt;
После окончания работы директивы М будут выведены начальное&lt;br /&gt;
сообщение и адрес конца текста в буферы, a DIS. «МИКРОН» перейдет в режим ожидания&lt;br /&gt;
ввода директив.&lt;br /&gt;
&lt;br /&gt;
Теперь можно ввести директиву А, результат работы которой -&lt;br /&gt;
удаление всех адресов, расположенных в первых четырех позициях каждой строки.&lt;br /&gt;
После проведенных операций будет создан текст программы, который может быть&lt;br /&gt;
оттранслирован АССЕМБЛЕРОМ ASSM.&amp;quot;МИКРОН&amp;quot; Приведем несколько примеров применения&lt;br /&gt;
директив при дизассемблировании части самой программы ДИЗАССЕМБЛЕР. Предварительно&lt;br /&gt;
директивой МОНИТОРА Т 800, FFF, 1100 эта программа была помещена в область трансляции&lt;br /&gt;
(см. табл. 3, табл. 4, табл. 5).&lt;br /&gt;
&lt;br /&gt;
Таблица 3.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DIS.&amp;quot;МИКРОН* КОНЕЦ TEKCTA: 2101H &lt;br /&gt;
*D &lt;br /&gt;
РАБОЧИЙ АДРЕС? 0800 &lt;br /&gt;
ТЕКСТ(Y/N)? N &lt;br /&gt;
NEW(Y/N) Y &lt;br /&gt;
АДРЕС?0800 &lt;br /&gt;
&lt;br /&gt;
0800  LXI  H,73FF &lt;br /&gt;
0803  LXI  D,2100 &lt;br /&gt;
0806  SPHL &lt;br /&gt;
0807  XCHD &lt;br /&gt;
0808  MOV  A,M &lt;br /&gt;
0809  XNR  A &lt;br /&gt;
080A  JZ   0817 &lt;br /&gt;
080D  INX  H &lt;br /&gt;
080E  CALL 08D9 &lt;br /&gt;
0811  JNZ  0808 &lt;br /&gt;
0817  LHLD 0804 &lt;br /&gt;
081A  SHLD 1000 &lt;br /&gt;
081A  INR  A &lt;br /&gt;
081В  STA  1012 &lt;br /&gt;
081E  SHLD 1002 &lt;br /&gt;
0821  LXI  H,0E17 &lt;br /&gt;
0824  CALL 0E11 &lt;br /&gt;
0827  PUSH H &lt;br /&gt;
0828  LHLD 1000 &lt;br /&gt;
082В  MOV  D,H &lt;br /&gt;
082C  MOV  E,L &lt;br /&gt;
082D  CALL 0DEF &lt;br /&gt;
0830  XCHG &lt;br /&gt;
&lt;br /&gt;
ТЕКСТ(Y/N)?Y &lt;br /&gt;
ДАЛЕЕ ВЫВОД НА ЭКРАН СЛЕДУЮЩЕГО ФРАГМЕНТА ЗАКАНЧИВАЮЩЕГОСЯ ТАК ЖЕ ВОПРОСОМ: &lt;br /&gt;
TEKCT(Y/N)?&amp;lt;CTP&amp;gt; &lt;br /&gt;
АДРЕС?&amp;lt;СТР&amp;gt; &lt;br /&gt;
DIS.&amp;quot;МИКРОН&amp;quot; KOHEЦ TEKCTA: 2286H &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Таблица 4.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0800        LXI   H,L00 &lt;br /&gt;
0803        LXI   D,L01 &lt;br /&gt;
0806        SPHL &lt;br /&gt;
0807        XCHG &lt;br /&gt;
0808 L04:   MOV   A,M &lt;br /&gt;
0809        INR   A &lt;br /&gt;
080A        JZ    L02 &lt;br /&gt;
080D        INX   H &lt;br /&gt;
080E        CALL  L03 &lt;br /&gt;
0811        JNZ   L04 &lt;br /&gt;
0814        LHLD  L05 &lt;br /&gt;
0817 L02:   SHLD  L06 &lt;br /&gt;
081A        INR   A &lt;br /&gt;
081B        STA   L07 &lt;br /&gt;
081E        SHLD  L08 &lt;br /&gt;
0821        LXI   H,L09 &lt;br /&gt;
0824        CALL  L0A &lt;br /&gt;
0827        PUSH  H &lt;br /&gt;
0828        LHLD  L06 &lt;br /&gt;
082B        MOV   D,H &lt;br /&gt;
082C        MOV   E,L &lt;br /&gt;
082D        CALL  L0B &lt;br /&gt;
0830        XCHG  &lt;br /&gt;
     L00:   EQU   73FFH &lt;br /&gt;
     L01:   EQU   2100H &lt;br /&gt;
     L03:   EQU   08D9H &lt;br /&gt;
     L05:   EQU   0804H &lt;br /&gt;
     L06:   EQU   1000H &lt;br /&gt;
     L07:   EQU   1012H &lt;br /&gt;
     L08:   EQU   1002H &lt;br /&gt;
     L09:   EOU   0E17H &lt;br /&gt;
     L0A:   EQU   0E11H &lt;br /&gt;
     L0B:   EQU   0DEFH &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Таблица 5.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
           LXI   H,L00&lt;br /&gt;
           LXI   D,L01&lt;br /&gt;
           SPHL &lt;br /&gt;
           XCHG&lt;br /&gt;
L04:       MOV   A,M&lt;br /&gt;
           INR   A&lt;br /&gt;
           JZ    L02&lt;br /&gt;
           INX   H&lt;br /&gt;
           CALL  L05&lt;br /&gt;
           JNZ   L04&lt;br /&gt;
           LHLD  L05&lt;br /&gt;
L02:       SHLD  L06&lt;br /&gt;
           INR   A&lt;br /&gt;
           STA   L07&lt;br /&gt;
           SHLD  L08&lt;br /&gt;
           LXI   H,L09&lt;br /&gt;
           CALL  L0A&lt;br /&gt;
           PUSH  H&lt;br /&gt;
           LHLD  L06&lt;br /&gt;
           MOV   D,H&lt;br /&gt;
           MOV   E,L&lt;br /&gt;
           CALL  L0B&lt;br /&gt;
           XCHG&lt;br /&gt;
L00:       EQU   73FFH&lt;br /&gt;
L01:       EQU   2100H&lt;br /&gt;
L03:       EQU   08D9H&lt;br /&gt;
L05:       EQU   0804H&lt;br /&gt;
L06:       EQU   1000H&lt;br /&gt;
L07:       EQU   1012H&lt;br /&gt;
L08:       EQU   1002H&lt;br /&gt;
L09:       EQU   0E17H&lt;br /&gt;
L0A:       EQU   0E11H&lt;br /&gt;
L0B:       EQU   0DEFH&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ПОЛУЧЕННЫЙ ТЕКСТ MOЖET БЫТЬ ОТТРАНСЛИРОВАН АССЕМБЛЕРОМ ASSM.&lt;br /&gt;
«МИКРОН». По директиве СТР можно перейти в РЕДАКТОР и редактировать дизассемблированный&lt;br /&gt;
текст на любом этапе работы. Делать, однако, это нужно осторожно из-за особенностей&lt;br /&gt;
выполнения директив М и А. Так директива М работает со строго позиционированными&lt;br /&gt;
строками текста, о чем уже упоминалось. Например, если числовой операнд в трехбайтовой&lt;br /&gt;
команде сместить при редактировании в любую сторону на любое число позиций,&lt;br /&gt;
то он не будет заменен на метку, а сохранит свое значение (в некоторых случаях&lt;br /&gt;
это может оказаться полезным).&lt;br /&gt;
&lt;br /&gt;
Если вы редактируете текст перед применением директивы А, следует&lt;br /&gt;
иметь в виду, что при ее выполнении DIS. «МИКРОН» удаляет первые четыре символа&lt;br /&gt;
каждой строки, начинающейся с цифры или латинских букв А, В. С. D, Е, F. Так&lt;br /&gt;
если в начале какой-либо строки будет поставлена метка CONST:. то после выполнения&lt;br /&gt;
директивы А на ее месте в тексте останется только Т:. Строки, начинающиеся с&lt;br /&gt;
любых других символов, останутся без изменений.&lt;br /&gt;
&lt;br /&gt;
Для проверки правильности дизассемблирования рекомендуется провести&lt;br /&gt;
трансляцию полученного текста программы, сравнить результат трансляции с исходной&lt;br /&gt;
(используя директиву С МОНИТОРА), а затем модифицировать полученный исходный&lt;br /&gt;
текст, дополняя его комментариями, псевдооператором ORG и т. д.&lt;br /&gt;
&lt;br /&gt;
Новая версия РЕДАКТОРА ED.&amp;quot;МИКРОН&amp;quot; дополнена средствами обработки&lt;br /&gt;
дизассемблированных текстов. Все директивы ранее опубликованной версии сохранены.&lt;br /&gt;
Версии отличаются только количеством позиций клавиши ТАБ (4 вместо 8) и порядком&lt;br /&gt;
работы с директивой AP2+D. Теперь для удаления фрагмента текста необходимо пометить&lt;br /&gt;
его начало нажатием клавиш AP2+D. переместить курсор на строку, следующую за&lt;br /&gt;
удаляемым фрагментом, после чего ввести директиву АР2+Е (в прежней версии -&lt;br /&gt;
AP2+D).&lt;br /&gt;
&lt;br /&gt;
При запуске редактора по директиве G0 МОНИТОРА на экран&lt;br /&gt;
выводится запрос NEW?. Если ответить Y. то будет очищен текстовый буфер и РЕДАКТОР&lt;br /&gt;
перейдет в режим ввода текста. При нажатии любой другой клавиши РЕДАКТОР произведет&lt;br /&gt;
анализ содержимого буфера на наличие признака конца текста и если не обнаружит&lt;br /&gt;
его, выведет сообщение МАЛО ОЗУ и запрос NEW?, на который опять следует ответить&lt;br /&gt;
Y. Если признак конца текста будет найден, то на экран выводится его начальный&lt;br /&gt;
фрагмент (при наличии в буфере текста произвольной информации, заканчивающейся&lt;br /&gt;
признаком конца текста, на экран будет выведена бессмысленная информация: не&lt;br /&gt;
следует пытаться редактировать ее, так как это может привести к порче самого&lt;br /&gt;
РЕДАКТОРА. Выйти из этой ситуации поможет директива AP2+N и нажатие на клавишу&lt;br /&gt;
Y).&lt;br /&gt;
&lt;br /&gt;
Теперь несколько слов о новых директивах РЕДАКТОРА.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;AP2+S&amp;#039;&amp;#039;&amp;#039; — занесение в промежуточный&lt;br /&gt;
буфер помеченного фрагмента текста. Порядок работы при этом следующий. Начало&lt;br /&gt;
запоминаемого фрагмента помечают директивой AP2+S. Курсор перемещают на строку,&lt;br /&gt;
следующую за последней строкой запоминаемого фрагмента, и вводят директиву АР2+Е.&lt;br /&gt;
Фрагмент текста будет запомнен в буфере, в качестве которого используется область&lt;br /&gt;
трансляции. При попытке занесения в буфер слишком большого фрагмента будет выведено&lt;br /&gt;
сообщение МАЛО ОЗУ.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;АР2+Т&amp;#039;&amp;#039;&amp;#039; — вставка запомненного фрагмента текста из временного&lt;br /&gt;
буфера в редактируемый текст перед строкой, на которой расположен курсор.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;AP2+L=Y&amp;#039;&amp;#039;&amp;#039; — поиск и замена последовательности символов Х&lt;br /&gt;
на последовательность Y. Если знак=и последовательность Y отсутствуют, то&lt;br /&gt;
происходит только поиск последовательности X. Режим поиск/замена удобно использовать&lt;br /&gt;
при замене имен меток, расставленных ДИЗАССЕМБЛЕРОМ, на имена, более полно отражающие&lt;br /&gt;
смысл происходящего в программе.&lt;br /&gt;
&lt;br /&gt;
При необходимости разбиения произвольной строки текста на две,&lt;br /&gt;
курсор устанавливают на символ, с которого должна начинаться новая строка и&lt;br /&gt;
нажимают клавишу ВК. Для слияния двух строк в одну курсор подводят к первой&lt;br /&gt;
из объединяемых строк и нажимают клавишу ПС.&lt;br /&gt;
&lt;br /&gt;
В режиме ввода текста можно использовать возможность дублирования&lt;br /&gt;
предыдущей строки или ее части нажатием клавиши &amp;amp;#174; , в результате которого&lt;br /&gt;
будут последовательно повторены символы предыдущей строки.&lt;br /&gt;
&lt;br /&gt;
При работе нового РЕДАКТОРА с АССЕМБЛЕРОМ или ДИЗАССЕМБЛЕРОМ&lt;br /&gt;
следует помнить, что область трансляции используется в качестве временного буфера,&lt;br /&gt;
поэтому, пользуясь директивой AP2+S, вы каждый раз уничтожаете содержимое области&lt;br /&gt;
трансляции — результат ассемблирования или дизассемблируемую программу.&lt;br /&gt;
&lt;br /&gt;
Таблица 6.&lt;br /&gt;
{| class=border&lt;br /&gt;
|-&lt;br /&gt;
| Адрес || 0002 || 000E || 0021 || 045D || 00C8 || 0802 || 0805 || 0CA2 || 0DC1 || 0D48 || 0D66 || 0D80&lt;br /&gt;
|-&lt;br /&gt;
| 32К || 73 || 21 || 73 || 0F || DF || 73 || 21 || 74 || 74 || 74 || 76 || 74&lt;br /&gt;
|-&lt;br /&gt;
| 16К || 33 || 19 || 33 || 07 || E7 || 33 || 19 || 34 || 34 || 34 || 36 || 34&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Пакет «МИКРОН» предназначен для компьютера «Радио-86РК» с объемом&lt;br /&gt;
ОЗУ в 32 Кбайт. В табл.6 приведены адреса ячеек памяти, содержимое которых нужно&lt;br /&gt;
изменить для 16-килобайтной версии компьютера.&lt;br /&gt;
&lt;br /&gt;
Таблица 7.&lt;br /&gt;
&lt;br /&gt;
{| class=border&lt;br /&gt;
|-&lt;br /&gt;
| ОБЛАСТЬ ПАМЯТИ || ВЕРСИЯ 16К || ВЕРСИЯ 32К&lt;br /&gt;
|-&lt;br /&gt;
| РЕДАКТОР &amp;lt;br /&amp;gt;&lt;br /&gt;
ДИЗАССЕМБЛЕР&amp;lt;br /&amp;gt;&lt;br /&gt;
СЛУЖЕБНАЯ ОБЛАСТЬ&amp;lt;br /&amp;gt;&lt;br /&gt;
ОБЛАСТЬ ТРАНСЛЯЦИИ&amp;lt;br /&amp;gt;&lt;br /&gt;
БУФЕР ТЕКСТА &amp;lt;br /&amp;gt;&lt;br /&gt;
ВЕРШИНА СТЕКА &amp;lt;br /&amp;gt;&lt;br /&gt;
ТАБЛИЦА МЕТОК &lt;br /&gt;
| 0000Н — 07FFH &amp;lt;br /&amp;gt;&lt;br /&gt;
0800H — 0FFFH&amp;lt;br /&amp;gt;&lt;br /&gt;
1000Н — 1100Н&amp;lt;br /&amp;gt;&lt;br /&gt;
1100H — 18FFH&amp;lt;br /&amp;gt;&lt;br /&gt;
1900Н — СТЕК&amp;lt;br /&amp;gt;&lt;br /&gt;
33FFH&amp;lt;br /&amp;gt;&lt;br /&gt;
3400Н — 35FFH &lt;br /&gt;
| 0000Н — 07FFH&amp;lt;br /&amp;gt;&lt;br /&gt;
0800Н — 0FFFH&amp;lt;br /&amp;gt;&lt;br /&gt;
1000Н — 1100Н&amp;lt;br /&amp;gt;&lt;br /&gt;
1100H — 20FFH&amp;lt;br /&amp;gt;&lt;br /&gt;
2100Н — СТЕК&amp;lt;br /&amp;gt;&lt;br /&gt;
73FFH&amp;lt;br /&amp;gt;&lt;br /&gt;
7400Н — 75FFH&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Распределение памяти для обоих версий компьютера приведено в табл.7.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;В. БАРЧУКОВ, Е. ФАДЕЕВ&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
г. Москва&lt;br /&gt;
&lt;br /&gt;
[[Категория:Радио-86РК/Публикации|26]]&lt;/div&gt;</summary>
		<author><name>Panther</name></author>
	</entry>
</feed>