Архитектура микропроцессоров и их программирование. Карягин А.П. - 17 стр.

UptoLike

Составители: 

17
весьма существенных компонентов программы, написанный на языке ассемб-
лера реконструкции не поддается. Так, очевидно, не могут быть восстановлены
весьма полезные комментарии программиста. Кроме того, не представляется
возможным восстановить оригинальные символические имена адресов памяти.
Например, вместо оригинальной авторской конструкции типа JMP FINISH (пе-
рейти к завершающей процедуре) деассемблер сгенерирует строку вида JMP
OE6C. Пользователь видит перед собой команду перехода, однако ее смысл ос-
тается для него неясным.
Подобно остальным командам, эта программа DEBUG запускается пу-
тем набора на клавиатуре ее имени:
С:\ > DEBUG
В процессе ее выполнения запросам на ввод исполнительных операто-
ров предшествуют лишь "тире". Рассмотрим выполнение команд программой -
отладчиком DEBUG на примере поиска в памяти адреса символьной строки.
В качестве образца объекта поиска выберем сообщение об ошибке, вы-
даваемое MS DOS: "Файл не найден". На рисунке 1.6 показана процедура
запуска программы DEBUG и оператор поиска указанного выше сообщения.
Предположим, для определенности, что в качестве начального адреса просмот-
ра (поиска) программе DEBUG был передан адрес параграфа 0100, а также
размер (длина) просматриваемого участка (L) равный 65535 байтам (`FFFF в
шестнадцатеричной системе счисления). Программа DEBUG сообщает, что
интересующий нас текстовой объект найден.
С:\ > DEBUG
- S 0100:0000 L FFFF "Файл не найден"
0100:0FF9
Рисунок 1.6- Запуск программы DEBUG и поиск сообщения
Это сообщение формируется в форме сегментированного адреса
0100:0FF9, означающего, что относительно сегмента с адресом 0100 берется
шестнадцатеричное смещение 0FF9. Выполнив действия над адресами, мы
получим полный 20-байтовый физический адрес ячейки памяти:
0100 <адрес сегмента>
+ 0FF9 <смещение>
01FF9
Если в рамках программы DEBUG использовать команду "D", указав
при этом начальный адрес и количество просматриваемых байт (например, -D
0100:0100 L 100), то на экране будет отображено содержимое указанных ячеек
памяти. Одна из этих особенностей состоит в том, что в левую часть поля
весьма существенных компонентов программы, написанный на языке ассемб-
лера реконструкции не поддается. Так, очевидно, не могут быть восстановлены
весьма полезные комментарии программиста. Кроме того, не представляется
возможным восстановить оригинальные символические имена адресов памяти.
Например, вместо оригинальной авторской конструкции типа JMP FINISH (пе-
рейти к завершающей процедуре) деассемблер сгенерирует строку вида JMP
OE6C. Пользователь видит перед собой команду перехода, однако ее смысл ос-
тается для него неясным.
       Подобно остальным командам, эта программа DEBUG запускается пу-
тем набора на клавиатуре ее имени:

      С:\ > DEBUG

       В процессе ее выполнения запросам на ввод исполнительных операто-
ров предшествуют лишь "тире". Рассмотрим выполнение команд программой -
отладчиком DEBUG на примере поиска в памяти адреса символьной строки.
       В качестве образца объекта поиска выберем сообщение об ошибке, вы-
даваемое MS DOS: "Файл не найден". На рисунке 1.6 показана процедура
запуска программы DEBUG и оператор поиска указанного выше сообщения.
Предположим, для определенности, что в качестве начального адреса просмот-
ра (поиска) программе DEBUG был передан адрес параграфа 0100, а также
размер (длина) просматриваемого участка (L) равный 65535 байтам (`FFFF в
шестнадцатеричной системе счисления). Программа DEBUG сообщает, что
интересующий нас текстовой объект найден.


         С:\ > DEBUG
          - S 0100:0000 L FFFF "Файл не найден"
          0100:0FF9

      Рисунок 1.6- Запуск программы DEBUG и поиск сообщения

      Это сообщение формируется в форме сегментированного адреса
0100:0FF9, означающего, что относительно сегмента с адресом 0100 берется
шестнадцатеричное смещение 0FF9. Выполнив действия над адресами, мы
получим полный 20-байтовый физический адрес ячейки памяти:

              0100 <адрес сегмента>
             + 0FF9 <смещение>
              01FF9

       Если в рамках программы DEBUG использовать команду "D", указав
при этом начальный адрес и количество просматриваемых байт (например, -D
0100:0100 L 100), то на экране будет отображено содержимое указанных ячеек
памяти. Одна из этих особенностей состоит в том, что в левую часть поля
                                                                         17