Бройдо В.Л., Ильина О.П. Архитектура ЭВМ и систем (2006) (1186249), страница 88
Текст из файла (страница 88)
аоз Краткие сведения об отладчике программ Овооп 5. В пятом, последнем такте выполнения тгоманды АОО АХ, Ро!е сумма чисел из АЛУ должна быть передана и записана в регистр дХ МПП, а в регистре 1Р сформирован адрес смещения следующей команды программы. Для этого: О из кода команды в БРК будет считан первый адрес — АХ, который транзитом через УФА пройдет по КША в МПП, где инициирует для приема информации регистр АХ; О из Рег1 АЛУ будет считана сумма чисел, которая по КШД пройдет на вход МПП и будет записана в регистр АХ; О в регистр !Р будет добавлено число 6, равное длине выполненной команды (в нашем случае команда АОО АХ, Ро!е имеет длину 6 байт).
Поскольку в регистре! Р сменился код адреса смешения, ПК приступит к выполнению следующей команды программы. В случае выполнения команд передачи управления в конце такой команды к содержимому 1Р добавится не длина выполненной команды, а разность между адресом смещения текущей команды и адресом смещения команды, которой передано управление (при передаче управления в другой сегмент будет изменено н содержимое регистра С8).
Краткие сведения об отладчике программ ОеЬи9 Программа РеЪщ обеспечивает интерактивную отладку программ в формате ЕХЕ- и СОМ-файлов. Обычно он используется для отладки исполняемых программ, полученных с языка уровня ассемблера. Он позволяет отлаживать и исполняемые файлы .ЕХЕ и .СОМ, скомпилированные с языков более высокого уровня. Отладчик ПеЬпя умеет: 0 отслеживать выполнение и управлять выполнением программ; 0 вносить изменения в ход выполнения и данные отлаживаемой программы; 0 вводить небольшие программы на языке ассемблера, выполнять ассемблирование этих программ и создавать исполняемые программы с расширением СОМ; 0 выполнять преобразование машинных шестнадцатеричных кодов команд в формат языка ассемблера (дезассемблирование); 0 отображать текстовые файлы в АБСП- и шестнадцатеричном формате; О просматривать и изменять содержимое регистров памяти МП и ячеек основной памяти; 0 загружать информацию с дисковых накопителей в основную память и наоборот (считывать информацию с дисков и записывать на них); О осуществлять поиск конкретных данных в текстах сообщений и программ (с выдачей адреса их хранения); Глава 18.
Элементы программировании на языке ассемблера С1 просматривать регистр флагов с отображением мнемокодов значений этих флагов (табл. 9.2). Таблица 9.2. Используемые отладчиком йеЬиО мнемокоды значений флагов Для вызова отладчика Реей следует набрать в командной строке 1)03 слово оеЬиО и, если необходимо, имена файлов, с которыми мы будем работать, например: беЬи0 ргой.ехе. Приглашение к вводу команд — «-». После завершения работы с 1)еЪвй для выхода из него следует набрать о.
После набора каждой команды следует нажимать Еп1ег. Основные команды отладчика ЮеЬия С1 1ч' (паше — имя) — объявление имени файла. С) й т (гей1зсег — регистр) — отображение на экране дисплея содержимого регистра памяти МП с именем т. Если т не указано, показывается содержимое всех регистров памяти МП, вектор-адрес следующей команды (СВОР), машинный и мнемокод этой команды, например: -й АХ=0005 ОХ=0005 СХ=ОООО ОХ-0001 5Р-ГЕЕЕ ВР=ОООО 51=0000 01=0000 05=1ЯВЕ Е5=1АВЕ 55=1АВЕ С5=1АВЕ 1Р-010А МЧ ОР Е1 РЕ М1 МА РО МС 1АВЕ:010А 881500 МОЧ АХ.ОО!5 Если отображается содержимое одного регистра, то команда й позволяет изменить его содержимое: -й ах АХ 0005 :45 -й ах АХ 0045 С1 А л (аззетЫег) — прием команд ассемблера с клавиатуры и преобразование их в машинные коды, л — начальный вектор-адрес машинных команд. Пример ввода программы: Краткие сведения об отладчике программ Повод 405 -А 100 1АВЕ:0100 аоч ах,15 1АВЕ:0103 гоч Ьх,5 1АВЕ:0106 а06 ах,Ьх 1АВЕ:0108 сйч Ьх 1АВЕ;010А С3 !! п1, п2 СК (ппаааешЫе — дезассемблирование) — преобразование машинных кодов команд в команды на языке ассемблера и отображение их на экране дисплея, и! — вектор-адрес первой, а п2 — смешение последней из машинных команд, подлежащих дезассемблированию, К вЂ” длина программы (может указываться либо п2, либо ЕК).
Пример дезассемблирования программы: -0100 ! 1АВЕ;0100 881500 МОЧ АХ.0015 1А8Е:0103 880500 МОЧ ВХ.0005 1А8Е:0106 0108 АОО АХ.ВХ 1АВЕ:0108 ГУЕЗ 01Ч ВХ С3 Т К (Стас!пй — трассировка) — выполнение очередных К команд программы: Ели К не указано, то выполняется одна команда (пошаговая трассировка программы). Команды обращения к процедурам и внутренние прерывания командой Т не выполняются, так как по Т будут последовательно выполняться команды процедуры и команды обработки прерывания соответственно. В этих случаях следует использовать команду процедурной трассировки Р (ргосег(пге), почти аналогичную команде Т, но позволяющую автоматически полностью выполнять встречающиеся при трассировке процедуры, или команду 6 и.
После выполнения команд (команды) на дисплей выводится: О содержимое всех регистров памяти МП в шестнадцатеричном коде (значения флагов регистра РЕ показываются в мнемокоде (см. табл. 9.2); О вектор-адрес (СЗ:!Р); О машинный и мнемокоды текущей команды. Пример трассировки программы: 8 АХ=ОООО ВХ=ОООО СХ-0000 ОХ-0000 5Р-ЕЕЕЕ ВР=ОООО 51=0000 01=0000 05-1АВЕ Е5-1АВЕ 55-1АВЕ С5-1АВЕ 1Р-0100 МЧ ОР Е1 РС М7 МА РО йС 1АВЕ:0100 881500 МОЧ АХ.0015 АХ=0015 ВХ=ОООО СХ=ОООО ОХ=ОООО 5Р=ЕЕЕЕ ВР=ОООО 51=0000 01=0000 05=1АВЕ Е5=1АВЕ 55=1А8Е С5=1А8Е 1Р=0103 МЧ ОР Е! РС М7 МА РО МС 1АВЕ;0103 880500 МОЧ ВХ,0005 -С АХ=0015 ВХ=0005 СХ=ОООО ОХ=ОООО 5Р=РРЕЕ ВР=ОООО 51=0000 01-0000 05-1АВЕ Е5-1АВЕ 55=1АВЕ С5=1АВЕ 1Р-0106 йч ОР Е! РС й7 йА РО МС 1АВЕ:0106 0108 АОО АХ,ВХ АХ-001А ВХ=0005 СХ=ОООО ОХ-0000 5Р-ЕЕЕЕ ВР-0000 51=0000 01=0000 05=1АВЕ Е5=1А8Е 55=1А8Е С5=1АВЕ 1Р-0108 МЧ ОР Е! РС й7 МА РО МС 4О6 Глава 18, Элементы программирования на языке ассемблера 1АВЕ.0108 Г7ЕЗ О!Ч ВХ АХ-0005 ВХ-0005 СХ-0000 ОХ-0001 5Р=ЕЕЕЕ ВР-0000 51=0000 01=0000 05=1АВЕ Е5=1АВЕ 55=1АВЕ С5=1ЯВЕ !Р-010А МЧ ОР Е1 РЕ М2 МА РО йС 1АВЕ;010Я 48 ОЕС АХ С1 6 о (Во — запуск) — выполнение ЕХЕ- или СОМ-программы до команды с вектор-адресом п, при отсутствии и программа отрабатывает до конца.
После выполнения команд (команды) на дисплей выводятся: О содержимое всех регистров памяти МП в шестнадцатеричном коде (значения); О флаги регистра РС вЂ” выводятся в мнемокоде (см. табл. 9.2); О вектор-адрес (СЫР), машинный н мнемокод текущей команды. После выполнения программы получим: -9 10а АХ=0005 ОХ=0005 СХ=ОООО ОХ=0001 5Р=ЕРЕЕ ВР=ОООО 51=0000 01=0000 05=1АВЕ Е5-1АВЕ 55-1АВЕ С5-1А8Е 1Р-010А МЧ ОР Е! РЕ М2 МА РО МС 1ЯВЕ:010А 48 ОЕС АХ О 0 и, з ЕМ (двшр — вывод содержимого памяти) — отобразить на экране дисплея содержимое ячеек памяти начиная с ячейки по вектор-адресу и (по умолчанию и — текущий вектор-адрес + 1 и и - 128), то есть, нажав клавиши 0 и Епгег, можно просмотреть следующие 128 ячеек: -0 1020:ОСОО Г7 07 01 00 75 12 2Е С7-06 СВ 98 02 00 ЕВ 09 ЕВ ....ш ..,.......
1020:ОС10 96 00 ЕВ ЕВ ОО Е9 ЕВ ОЯ-50 80 ОЗ 84 ЕР ЕВ ОЗ 00 ....,...Р...., .. 1020:ОС20 58 ЕВ СЗ 57 26 88 7Г 04-2Е 89 ЗЕ СГ 98 26 88 05 Х..ИВ.....>..8.. 1020:ОСЗО 26 88 65 01 50 2Е А1 ОЕ-98 26 89 45 02 58 ЗС 01 б,е.Р....В.Е.Х<. 1020:ОС40 75 ОА 26 89 55 04 26 89-40 06 ЕВ 5А ЗС 02 75 06 и.$.0.5.М..7<.и. 1020:ОС50 26 89 55 04 ЕВ 50 ЗС 07-74 ЕВ ЗС 08 74 Е4 ЗС 06 $.О..Р<.1.<.1.<. 1020:ОС60 75 06 26 88 55 04 ЕВ ЗЕ-ЗС 04 75 ОЕ 2Е Я1 08 98 и.$.0..><.о.....
1020;ОС70 40 26 89 45 04 26 ВС 50-06 ЕВ 28 26 89 75 04 26 85.5.$.],.+$.и.б Частные случаи: О если Е и К не указаны, то до ячейки, имеющейся в том же сегменте, смещение равно 8; О если 8 не указано, то показываются ! ячеек памяти (в частности, 0 и С1— одна ячейка памяти с вектор-адресом о); Примеры: -0 ЗЬ43 ЕЗ 1АВЕ:3840 6С 6С 65 ! 1е -О ЗЬ43 11 1А8Е:3840 6С ! О если 8 и ЕМ не указаны (есть только 0 о), то отображаются 128 ячеек памяти, например: -О 405 Краткие сведения об отладчике программ Оеьид ао7 1АВЕ:0400 69 БС 65-66 69 БС 65 бб 69 БС 65 ~1еЕ11еЕ11е 1АВЕ:0410 66 69 6С 65 бб 69 БС 65-66 69 БС 65 бб 69 БС 65 Е11ег11ей 1е(11е 1АВЕ:0420 00 44 СО 21 Гб С2 80 74-05 Гб С2 10 75 05 ЕВ 52 .0.1...1, ..ш,й 1АВЕ:0430 ГО ВС ОВ 53 81 СЗ 20 00-03 ОА ВС СО 88 С2 80 Е4 ...5..-.........
1АВЕ:0440 ОГ 81 04 88 Г2 ОЗ Еб 88-СЕ 01 Е9 4Е 4Е 88 ЕЕ 28 ...........88, + 1ЯВЕ:0450 ЕВ 28 08 ВЕ С5 ВЕ ОВ ГЗ-Аб ГС ВЕ ОО 07 06 ВГ 00 .+..........,... 1ЯВЕ:0460 01 33 Гб АО 95 ВА 10 00-ЕВ 28 АО 95 82 10 ЕВ 35 .3....,..+...,.5 1ЯВЕ:0470 АО 95 82 10 ЕВ 36 АО 95-82 10 ЕВ ЗВ АО 95 82 10 ....,б,....;..., 1АВЕ;0480 ЕВ 50 АО 95 82 .]... Содержимое выводится в шестнадцатеричном коде и в соответствующих символах АВСП (символы расширенного набора АВСП замещаются точкой (.)). ЕЗ Е п "текст1", " текст2"... (еп1ег — ввод) — изменение содержимого ячеек памяти, начиная с вектор-адреса л; количество ячеек определяется размером и количеством указанных в команде текстов: так, по команде -е 200 'ро1е', 'файл', Зйе' выводится следующая информация: -0 200 Ес 1АВЕ:0200 70 БЕ БС 65 Е4 АО А9 АВ-66 69 БС 65 ро1е...Е11е; При вводе числовой информации (машинных кодов команд) следует набрать Е и, нажать клавишу Епгег, и после отображенного байта информации и точки ввести новое значение (1 байт), например: -е 300 1ЯВЕ:0300 73.20 Для ввода последующих байтов нужно нажать клавишу Врасе и выполнить ввод очередного байта.
С1 р п ЕК "текст1" (61! — заполнить) — заполнение блока памяти длиной К байт, начиная с вектор-адреса и, однобайтовыми фрагментами «текст1»: например, -1 400 120 Зйе'. Результат выполнения команды: -0 400 130 1АВЕ;0400 66 69 БС 65 66 Б9 БС 65-66 69 БС 65 66 69 БС 65 111ей1ей1ей1е 1АВЕ:0410 66 69 БС 65 бб 69 БС 65-66 69 БС 65 66 69 БС 65 й1е(11ей1е(11е 1АВе;0420 00 44 сО 21 еб с2 80 74-05 еб с2 10 75 05 е8 52 .0.1...т....и..й С1 8 и СК "текст" (иеагсп — искать) — поиск фрагмента «текст» в поле памяти длиной К ячеек с выдачей вектор-адреса ячейки, хранящей искомый текст: -э 200110 ВГ.