Turbo Debugger 5.0: Руководство по применению, при выполнении лабораторных работ, страница 8

При инициировании опции I/Oоткрывается окно, в котором вам предлагается использовать одну из четырех директив: Inbyte, Outbyte, Readword, Writeword.

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

Аналогично, при записи в порты, некоторые устройства ввода/вывода могут вынужденно выполнить такие действия как запись данных на внешний диск или на принтер.

 Поэтому непродуманным использованием этих команд вы можете нарушить нормальную работу устройства или программы, которую вы отлаживаете

Inbyte

Эта директива позволяет считать байт из регистра данных порта ввода/вывода. При этом открывается окно, в котором вам предлагается задать номер порта, чье значение вы хотите проверить. (Если вы хотите считать не байт, а слово используйте директиву ReadWord.)

Read Word

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

Out byte

Директива Outbyte позволяет записать байт в регистр данных порта ввода/вывода. Номер порта, а также байт, который требуется записать, задается в открывающемся окне при инициировании данной директивы. Если в порт требуется записать слово, используйте директиву Writeword.

Write word

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

  VIEW /CPU / Data pane (панельданных)

Опция панели данных Datapaneокна CPU отображает шестнадцатеричный или форматизированный дамп части сегмента данных. Локальное меню для этой панели содержит следующие восемь опций:

              - Go to                           - Follow

              - Search                        - Previous

              - Next                            - Display As

              - Change                       - Block

Goto

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

Search

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

Next

Директива Nextинициирует поиск последующих элементов поиска, заданных директивой Search.  При этом, предыдущий, уже найденный элемент, не принимается во внимание.

Change

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

Follow

Директива Follow позволяет отобразить кодовую панель или панель данных по новым адресам памяти, задаваемым текущей позицией курсора.

Директива включает следующие опции:

  - Near code                        - Segment:offset to data

            - Far code                           - Base segment:0 to data

- Offset to data

Near code

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

Farcode

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

Offset to data

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

Segment:offset to data

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

Base segment:0 to data

Опция Basesegment:0 todataпозволяет сменить указатель базового адреса сегмента. Начальный адрес панели данных устанавливается с сегментным смещением 0. Базовый же адрес сегмента определяется словом в памяти, на который указывает текущее местоположение курсора.

Previous

Директива Previous возвращает отображение панели данных по адресу, который был у дампа перед последним изменением его адреса. Эта директива очень удобна для отмены действия таких директив Follow или Go to.

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

Display As

Опция DisplayAs позволяет выбирать форматы отображения данных на панели данных. Вы можете выбрать представление в любых форматах данных, используемых в языках C, Pascal и Assembler. Сам формат задается следующими директивами: