Как сделать файл листинга ассемблер

Обновлено: 06.07.2024

На этой лекции мы познакомимся со специальными программными средствами, предназначенными для преобразования исходных текстов на ассемблере к виду, приемлемому для выполнения на компьютере, и научимся использовать их.

Это правило означает, что если программа правильно разработана в отношении как структур данных, так и структур управления, то это в определенной степени гарантирует правильность ее функционирования. При применении такого стиля программирования ошибки являются легко локализуемыми и устранимыми.

О том, как правильно организовать разработку программ (независимо от языка), написана не одна сотня книг. Большинство авторов предлагают следующий процесс разработки программы (мы адаптируем его, где это необходимо, к особенностям ассемблера):

1. Этап постановки и формулировки задачи:

§ изучение предметной области и сбор материала в проблемно-ориентированном контексте;

§ определение назначения программы, выработка требований к ней и представление требований, если возможно, в формализованном виде;

§ формулирование требований к представлению исходных данных и выходных результатов;

§ определение структур входных и выходных данных;

§ формирование ограничений и допущений на исходные и выходные данные.

2. Этап проектирования:

§ выбор метода реализации задачи;

§ разработка алгоритма реализации задачи;

§ разработка структуры программы в соответствии с выбранной моделью памяти.

3. Этап кодирования:

§ уточнение структуры входных и выходных данных и определение ассемблерного формата их представления;

§ комментирование текста программы и составление предварительного описания программы.

4. Этап отладки и тестирования:

§ составление тестов для проверки правильности работы программы;

§ обнаружение, локализация и устранение ошибок в программе, выявленных в тестах;

§ корректировка кода программы и ее описания.

5. Этап эксплуатации и сопровождения:

§ настройка программы на конкретные условия использования;

§ обучение пользователей работе с программой;

§ организация сбора сведений о сбоях в работе программы, ошибках в выходных данных, пожеланиях по улучшению интерфейса и удобства работы с программой;

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

К порядку применения и полноте выполнения перечисленных этапов нужно подходить разумно. Многое определяется особенностями конкретной задачи, ее назначением, объемом кода и обрабатываемых данных, другими характеристиками задачи. Некоторые из этих этапов могут либо выполняться одновременно с другими этапами, либо вовсе отсутствовать. Главное, чтобы вы, приступая к созданию нового программного продукта, помнили о необходимости его концептуальной целостности и недопустимости анархии в процессе разработки.

Ранее мы обсуждали пример программы на ассемблере. Если посмотреть на описанный выше процесс разработки программы, то можно увидеть, что обсуждение велось нами в полном согласии с этим процессом. Мы подробно обсудили проблему, структуры данных, структуру программного модуля и т. д. Наше обсуждение закончилось на этапе кодирования программы. Далее, по логике, нужно было ввести программу в компьютер, перевести в машинное представление и выполнить. Как это сделать? Дальнейшее обсуждение будет посвящено именно этому вопросу.

Традиционно у существующих реализаций ассемблера нет интегрированной среды, подобной интегрированным средам Turbo Pascal, Turbo С или Visual C++. Поэтому для выполнения всех функций по вводу кода программы, ее трансляции, редактированию и отладке необходимо использовать отдельные служебные программы. Большая часть их входит в состав специализированных пакетов ассемблера.

На рис. 4.1 приведена общая схема процесса разработки программы на ассемблере на примере рассмотренной ранее программы (см. листинг 3.1). На схеме выделено четыре шага этого процесса. На первом шаге, когда вводится код программы, можно использовать любой текстовый редактор. Основным требованием к нему является то, чтобы он не вставлял посторонних символов (спецсимволов редактирования). Файл должен иметь расширение . asm.


Рис.4.1. Процесс разработки программы на ассемблере.

Программы, реализующие остальные шаги схемы, входят в состав программного пакета ассемблера. Традиционно на рынке ассемблеров для микропроцессоров фирмы Intel имеется два пакета:

§ Turbo Assembler TASM фирмы Borland.

У этих пакетов много общего. Пакет макроассемблера фирмы Microsoft (MASM) получил свое название потому, что он позволял программисту задавать макроопределения (или макросы), представляющие собой именованные группы команд. Они обладали тем свойством, что их можно было вставлять в программу в любом месте, указав только имя группы в месте вставки. Пакет Turbo Assembler (TASM) интересен тем, что имеет два режима работы. Один из этих режимов, называемый MASM, поддерживает все основные возможности макроассемблера MASM. Другой режим, называемый IDEAL, предоставляет более удобный синтаксис написания программ, более эффективное использование памяти при трансляции программы и другие новшества, приближающие компилятор ассемблера к компиляторам языков высокого уровня.

Создание объектного модуля (трансляция программы)

Итак, исходный текст программы на ассемблере подготовлен и записан на диск. Следующий шаг — трансляция программы. На этом шаге формируется объектный модуль, который включает в себя представление исходной программы в машинных кодах и некоторую другую информацию, необходимую для отладки и компоновки его с другими модулями. Для получения объектного модуля исходный файл необходимо подвергнуть трансляции при помощи программы tasm.exe из пакета TASM.

Формат командной строки для запуска tasm.exe следующий:

TASM [опции] имя_исходного_файла [,имя_объектного_файла]

На первый взгляд, все очень сложно. Не пугайтесь — если вы вдруг забыли формат командной строки и возможные значения параметров, то получить быструю справку на экране монитора можно, просто запустив tasm.exe без задания каких-либо аргументов. Обратите внимание, что большинство параметров заключено в квадратные скобки. Это общепринятое соглашение по обозначению параметров, которые могут отсутствовать. Таким образом, обязательным аргументом командной строки является лишь имя_исходного_файла. Этот файл должен находиться на диске и обязательно иметь расширение .asm. За именем исходного файла через запятую могут следовать необязательные аргументы, обозначающие имена объектного файла, файла листинга и файла перекрестных ссылок. Если не задать их, то соответствующие файлы попросту не будут созданы. Если же их нужно создать, то необходимо учитывать следующее:

§ Если имена объектного файла, файла листинга и файла перекрестных ссылок должны совпадать с именем исходного файла (наиболее типичный случай), то нужно просто поставить запятые вместо имен этих файлов:

В результате будут созданы файлы, как показано на рис. 4.1 для шага 2.

§ Если имена объектного файла, файла листинга и файла перекрестных ссылок не должны совпадать с именем исходного файла, то нужно в соответствующем порядке в командной строке указать имена соответствующих файлов, к примеру:

tasm.exe prg_3_1 , ,prg_list , ,

В результате на диске будут созданы файлы

§ Если требуется выборочное создание файлов, то вместо ненужных файлов необходимо подставить параметр nul. Например:

tasm.exe prg_3_1 , ,nul, ,

В результате на диске будут созданы файлы

Необязательный аргумент опции позволяет задавать режим работы транслятора TASM. Этих опций достаточно много. Для того чтобы получить представление о них, просмотрите приложение. Некоторые из опций понадобятся нам в ближайшее время, а большинство из них, скорее всего, никогда не будут вами востребованы.

Давайте немного поэкспериментируем с программой tasm.exe. Попутно выясним еще несколько важных моментов. Прежде всего проведем некоторые организационные мероприятия. После инсталляции пакета TASM в каталоге \TASM\BIN, где находится файл tasm.exe, можно увидеть большое количество файлов. Можно запустить программу tasm.exe прямо отсюда, но тогда созданные ею файлы объектного кода, листинга и перекрестных ссылок тоже окажутся в этом каталоге. Если вы пишете одну программу, то неудобство не столь заметно, но при работе с несколькими программами очень скоро этот каталог станет похож на свалку.

Чтобы избежать подобной ситуации, рекомендуется выполнить следующие действия:

§ Создать в каталоге \TASM подкаталоги \TASM\WORK и \TASM\ PROGRAM. Каталог PROGRAM будем использовать для хранения отлаженных кодов программ и их исполняемых модулей (файлы с расширением .ехе). Каталог WORK будем использовать как рабочий; в нем будут находиться необходимые для получения исполняемого модуля файлы из пакета транслятора TASM и файл исходного модуля, с которым мы в данный момент работаем. После того как ошибки в исходном модуле устранены, он вместе со своим исполняемым модулем переписывается в каталог PROGRAM. Из каталога WORK удаляются все ненужные файлы — и он готов для работы со следующим исходным модулем на ассемблере. Таким образом, в каталоге WORK всегда находится рабочая версия программы, а в каталоге PROGRAM — отлаженная версия.

§ Поместить файл prg_3_1.asm в каталог WORK.

После всех этих действий можно начинать работу. Перейдем в каталог WORK и запустим на трансляцию программу prgJM.asm командной строкой вида

tasm.exe /zi prg_3_1 , , , ,

Листинг 4.1. Пример листинга асемблера




Строки в файле листинга имеют следующий формат:

§ — уровень вложенности включаемых файлов или макрокоманд в файле;

§ - номер строки в файле листинга. Эти номера используются для локализации ошибок и формирования таблицы перекрестных ссылок.

Помните, что эти номера могут не соответствовать номерам строк в исходном файле. В добавление к вышесказанному нужно отметить, что ассемблер имеет директиву INCLUDE, которая позволяет включить в данный файл строки другого файла. Нумерация при этом, как и в случае макрокоманд, будет последовательная для строк обоих файлов. Факт вложенности кода одного файла в другой фиксируется увеличением значения на единицу. Это замечание касается и использования макрокоманд;

§ — смещение в байтах текущей команды относительно начала сегмента кода. Это смещение называют также счетчиком адреса. Смещение вычисляет транслятор для адресации в сегменте кода;

§ - машинное представление команды ассемблера, представленной далее в этой строке полем ;

§ — строка кода из исходного файла.

Дальнейшие действия зависят от характера ошибки. По мере накопления опыта ошибки будут происходить, скорее всего, в результате простой описки. Пока же наши действия будут заключаться в выяснении того, насколько правильно написана та или иная синтаксическая конструкция. Исправив несколько первых ошибок, перетранслируйте программу и приступайте к устранению следующих ошибок. Возможно, что этого делать не придется, так как после исправления одной ошибки могут исчезнуть и последующие (так называемые наведенные ошибки).

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

§ команды ассемблера — конструкции, которым соответствуют машинные команды;

§ директивы ассемблера — конструкции, которые не генерируют машинных команд, а являются указаниями транслятору на выполнение некоторых действий или служат для задания режима его работы;

§ макрокоманды — конструкции, которые, будучи представлены одной строкой в исходном файле программы, после обработки транслятором генерируют в объектном модуле последовательность команд, директив или макрокоманд ассемблера.

Формат листинга и его полнота не являются жестко регламентированными. Их можно изменить, задавая в исходном файле программы директивы управления листингом. Для знакомства с ними обратитесь к приложению.

Как мне получить листинг программы?
У меня есть мой .asm файл, что мне дальше делать?
P.S. Работаю с Ассемблером через qeditor.

код программы (содержимое .asm файла) - это и есть листинг программы.
Что Вы имеете в виду под листингом - результат компиляции с адресами и машинными кодами? (если да - то Вам нужно откомпилировать ваш исходник с помощью masm32 )

Да-да, именно результат компиляции с адресами и машинными кодами. А как это сделать?
В учебнике: masm32.exe name.asm/L. но я не совсем понял, как это в моём случае делать, ведь у меня ml.exe он так не делает.

Как мне получить листинг программы?
У меня есть мой .asm файл, что мне дальше делать?
P.S. Работаю с Ассемблером через qeditor.

Хорошо. А подскажите, какая тут ошибка?

написал вроде простенькую программку, а выдаёт ошибку.

Form_13
А какую ошибку? Вооружись словарем и переведи. В программировании без знания английского языка никак не обойтись!

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


Перед запуском эмулятора необходимо сформировать из текстового файла с расширением .asm, содержащего отлаживаемую программу на языке ассемблера, исполняемый файл, т.е. файл, который будет загружен в ПЗУ микропроцессора. Исполняемый файл должен иметь расширение .tsk или .obj.

Ассемблер X8051 формирует из входных текстовых файлов с расширением .asm, промежуточные объектные файлы с расширением .obj, которые преобразуются в процессе связывания (линкования) программой link.exe в исполняемый файл с расширением .tsk, пригодный для загрузки в отладчик emu51.exe.

Некоторые простые ассемблеры, предназначенные для преобразования одного файла и, следовательно, не использующие процесс линкования, сразу формируют исполняемые файлы с расширениями .obj или .bin.

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

Ассемблер X8051.exe

Ассемблер X8051 фирмы 2500A.D. работает в DOS. Для вызова ассемблера необходимо запустить программу X8051.exe: ввести в командную строку имя файла X8051 и нажать клавишу ENTER. Его можно запустить и из Windows двойным щелчком левой клавиши мыши. Экстренный выход из ассемблера – Ctrl-С (при нажатой клавише Ctrl, нажать клавишу С).

Исходный текстовый файл с расширением .asm должен находится в одной папке с программой ассемблера.

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

ListingDestination? (N,T,D,E,L, =N).

где аббревиатуры означают следующее:

N = печати нет;

T = вывод на терминал (экран монитора);

P = вывод на принтер;

D = запись на жесткий диск;

E = вывести только ошибки;

L = печать вкл/выкл

Листинг наиболее удобно выводить на диск (ввести D и ENTER). Если ввести только ENTER, то установится по умолчанию =N, и листинг программы никуда выведен не будет.

Затем ассемблер запросит имя текстового файла с программой:

Inputfilename:

При вводе имени файла расширение .asm можно опустить.

Далее ассемблер запросит имя выходного файла:

Outputfilename:

Если ввести ENTER, то имя выходного файла будет образовано из имени входного с расширением .obj. Если имя введенного файла не имеет расширения, то ему будет приписано расширение .obj.

Если при трансляции обнаружены ошибки, то в файл с расширением .obj результаты трансляции не записываются (объем файла равен нулю). Файл листинга создается всегда. При наличии ошибок файл листинга позволяет проанализировать их причину и ввести необходимую коррекцию в исходный текстовый файл перед повторным ассемблированием.

На этапе ассемблирования устраняются синтаксические ошибки в программе (ошибки в записи мнемоники команд, операндов, меток).

Редактор связей link.exe

Редактор связей позволяет связать несколько (или один) объектных файлов, полученных ассемблером X8051 в один исполняемый файл. Объектный файл с расширением .obj должен находится в одной папке с программой редактора связей.

После запуска программы link.exe, редактор связей запрашивает имя первого объектного файла:

InputFilename:

Имя файла необходимо вводить без его расширения .obj.

Если файл содержит несколько секций (например, секцию программного кода CODE и секцию данных DATA), то далее будут запрошены их начальные адреса:

Enter Offset for ‘CODE’ :

Enter Offset for ‘DATA’ :

Если секции образуют изолированные области памяти, то необходимо ввести начальные адреса каждой из областей, завершая каждый ввод нажатием клавиши ENTER.

Если следующая секция является продолжением предыдущей, то после ввода адреса первой секции CODE, вместо адреса следующих секций нажимается клавиша ENTER.

Далее редактор связей запрашивает имя второго объектного файла:

InputFilename:

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

Далее редактор связей запрашивает имя выходного файла:

OutputFilename:

При обработке единственного объектного файла и формировании выходного файла с его именем, ввести ENTER. В противном случае ввести имя файла без расширения.

После определения имени выходного файла редактор связей запрашивает имя используемой библиотеки:

LibraryFilename:

При использовании библиотеки, ввести ее имя и нажать клавишу ENTER, в противном случае просто нажать ENTER.

После этого редактор связей запрашивает параметр (или параметры), определяющие тип выходного файла:

Parameter (D,S,A,M,Z,X,H,E,T,1,2,3, ):

где параметры означают создание следующих типов файлов:

D – файл с расширением .map, содержащий карту памяти, символьную таблицу глобальных переменных и все ошибки связывания (линкования) файлов;

S,A,M,Z – символьные файлы для процесса отладки в разных форматах;

X – исполняемый файл с расширением .tsk;

H,E – шестнадцатеричные файлы формата фирмы Intel;

T - шестнадцатеричный файл формата фирмы Tektronix;

1,2,3 - файлы формата фирмы Motorola;

Для создания исполняемого файла с расширением .tsk необходимо ввести параметр X, а для получения одновременно и карты памяти – ввести два параметра XD (или DX). В последнем случае будут созданы два файла с одинаковым именем и разными расширениями: .tsk и .map. Регистр ввода параметров не имеет значения.

На этапе связывания (линкования) выявляются ошибки, связанные с компоновкой секций, а также переходов в командах с относительной адресацией.

Эмулятор emu51.exe

Эмулятор (отладчик) представляет собой системную программу, предназначенную для локализации и исправления логических ошибок в пользовательской программе. Загружаемый файл с расширением .tsk (.obj) должен находится в одной папке с программой эмулятора

Эмулятор emu51.exe работает в среде DOS. Его можно запустить из Windows в не полноэкранным режиме. Для перехода в полноэкранный режим или возврата из него ввести ALT+ENTER. Для экстренного завершения работы в DOS ввести Ctrl+C.

При запуске эмулятора выполняется инициализация регистров: в указатель стека SP записывается число 07h, в регистры параллельных портов P0…P3 записывается FFh, переводя все разряды портов в режим чтения, а разряды остальных регистров, включая программный счетчик PC, устанавливаются в 0.


Перед запуском эмулятора необходимо сформировать из текстового файла с расширением .asm, содержащего отлаживаемую программу на языке ассемблера, исполняемый файл, т.е. файл, который будет загружен в ПЗУ микропроцессора. Исполняемый файл должен иметь расширение .tsk или .obj.

Ассемблер X8051 формирует из входных текстовых файлов с расширением .asm, промежуточные объектные файлы с расширением .obj, которые преобразуются в процессе связывания (линкования) программой link.exe в исполняемый файл с расширением .tsk, пригодный для загрузки в отладчик emu51.exe.

Некоторые простые ассемблеры, предназначенные для преобразования одного файла и, следовательно, не использующие процесс линкования, сразу формируют исполняемые файлы с расширениями .obj или .bin.

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

Ассемблер X8051.exe

Ассемблер X8051 фирмы 2500A.D. работает в DOS. Для вызова ассемблера необходимо запустить программу X8051.exe: ввести в командную строку имя файла X8051 и нажать клавишу ENTER. Его можно запустить и из Windows двойным щелчком левой клавиши мыши. Экстренный выход из ассемблера – Ctrl-С (при нажатой клавише Ctrl, нажать клавишу С).

Исходный текстовый файл с расширением .asm должен находится в одной папке с программой ассемблера.

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

ListingDestination? (N,T,D,E,L, =N).

где аббревиатуры означают следующее:

N = печати нет;

T = вывод на терминал (экран монитора);

P = вывод на принтер;

D = запись на жесткий диск;

E = вывести только ошибки;

L = печать вкл/выкл

Листинг наиболее удобно выводить на диск (ввести D и ENTER). Если ввести только ENTER, то установится по умолчанию =N, и листинг программы никуда выведен не будет.

Затем ассемблер запросит имя текстового файла с программой:

Inputfilename:

При вводе имени файла расширение .asm можно опустить.

Далее ассемблер запросит имя выходного файла:

Outputfilename:

Если ввести ENTER, то имя выходного файла будет образовано из имени входного с расширением .obj. Если имя введенного файла не имеет расширения, то ему будет приписано расширение .obj.

Если при трансляции обнаружены ошибки, то в файл с расширением .obj результаты трансляции не записываются (объем файла равен нулю). Файл листинга создается всегда. При наличии ошибок файл листинга позволяет проанализировать их причину и ввести необходимую коррекцию в исходный текстовый файл перед повторным ассемблированием.

На этапе ассемблирования устраняются синтаксические ошибки в программе (ошибки в записи мнемоники команд, операндов, меток).

Редактор связей link.exe

Редактор связей позволяет связать несколько (или один) объектных файлов, полученных ассемблером X8051 в один исполняемый файл. Объектный файл с расширением .obj должен находится в одной папке с программой редактора связей.

После запуска программы link.exe, редактор связей запрашивает имя первого объектного файла:

InputFilename:

Имя файла необходимо вводить без его расширения .obj.

Если файл содержит несколько секций (например, секцию программного кода CODE и секцию данных DATA), то далее будут запрошены их начальные адреса:

Enter Offset for ‘CODE’ :

Enter Offset for ‘DATA’ :

Если секции образуют изолированные области памяти, то необходимо ввести начальные адреса каждой из областей, завершая каждый ввод нажатием клавиши ENTER.

Если следующая секция является продолжением предыдущей, то после ввода адреса первой секции CODE, вместо адреса следующих секций нажимается клавиша ENTER.

Далее редактор связей запрашивает имя второго объектного файла:

InputFilename:

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

Далее редактор связей запрашивает имя выходного файла:

OutputFilename:

При обработке единственного объектного файла и формировании выходного файла с его именем, ввести ENTER. В противном случае ввести имя файла без расширения.

После определения имени выходного файла редактор связей запрашивает имя используемой библиотеки:

LibraryFilename:

При использовании библиотеки, ввести ее имя и нажать клавишу ENTER, в противном случае просто нажать ENTER.

После этого редактор связей запрашивает параметр (или параметры), определяющие тип выходного файла:

Parameter (D,S,A,M,Z,X,H,E,T,1,2,3, ):

где параметры означают создание следующих типов файлов:

D – файл с расширением .map, содержащий карту памяти, символьную таблицу глобальных переменных и все ошибки связывания (линкования) файлов;

S,A,M,Z – символьные файлы для процесса отладки в разных форматах;

X – исполняемый файл с расширением .tsk;

H,E – шестнадцатеричные файлы формата фирмы Intel;

T - шестнадцатеричный файл формата фирмы Tektronix;

1,2,3 - файлы формата фирмы Motorola;

Для создания исполняемого файла с расширением .tsk необходимо ввести параметр X, а для получения одновременно и карты памяти – ввести два параметра XD (или DX). В последнем случае будут созданы два файла с одинаковым именем и разными расширениями: .tsk и .map. Регистр ввода параметров не имеет значения.

На этапе связывания (линкования) выявляются ошибки, связанные с компоновкой секций, а также переходов в командах с относительной адресацией.

Эмулятор emu51.exe

Эмулятор (отладчик) представляет собой системную программу, предназначенную для локализации и исправления логических ошибок в пользовательской программе. Загружаемый файл с расширением .tsk (.obj) должен находится в одной папке с программой эмулятора

Эмулятор emu51.exe работает в среде DOS. Его можно запустить из Windows в не полноэкранным режиме. Для перехода в полноэкранный режим или возврата из него ввести ALT+ENTER. Для экстренного завершения работы в DOS ввести Ctrl+C.

При запуске эмулятора выполняется инициализация регистров: в указатель стека SP записывается число 07h, в регистры параллельных портов P0…P3 записывается FFh, переводя все разряды портов в режим чтения, а разряды остальных регистров, включая программный счетчик PC, устанавливаются в 0.

Читайте также: