Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
экзамен эвм2.docx
Скачиваний:
1
Добавлен:
23.09.2019
Размер:
66.15 Кб
Скачать
  1. Специальные средства отладчика

Команда A

Команда отладчика A (Assemble) переводит DEBUG в режим приема команд ассемблера и перевода их в машинные коды. Установим начальный адрес следующим образом:

A 100 [Return] Отладчик выдаст значение адреса сегмента кодов и смещения в ввиде хххх:0100. Теперь можно вводить каждую команду, завершая клавишей Return. При нажатии Return операция будет прекращена.Можно видеть, что отладчик определил стартовые адреса каждой команды. Прежде чем выполнить программу, проверим сгенерированные машинные коды.

Команда U

Команда отладчика U (Unassemble) показывает машинные коды для команд ассемблера. Необходимо сообщить отладчику адреса первой и последней команды, которые необходимо просмотреть. Теперь проведем трассировку выполнения программы, начиная с команды R для вывода содержимого регистров и первой команды программы. С помощью команд T выполним последовательно все команды программы. Программа DEBUG предназначена для отладки программ .

Сохранение программы из отладчика

Можно использовать DEBUG для сохранения программ на диске в следующих случаях:

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

а).загрузить программу по ее имени: DEBUG n:имяфайла[Return] б). просмотреть программу с помощью команды D и ввести изменения по команде E, в)записать измененную программу: W [Return]

2. Необходимо с помощью DEBUG написать небольшую по объему программу и сохранить ее на диске. Для этого следует: а)вызвать отладчик DEBUG, б)с помощью команд A (assemble) и E (enter) написатьпрограмму, в) присвоить программе имя: N имяфайла.COM [Return]. Тип программы должен быть COM (см. главу 6 для пояснений по COM-файлам). г) указать отладчику длину программы в байтах.

д) запросить регистр CX командой: R CX [Return] ж) отладчик выдаст на этот запрос CX 0000 (нулевое значение) з) указать длину программы - 6, и) записать измененную программу: W [Return]

В обоих случаях DEBUG выдает сообщение "Writing nnnn bytes." (Запись nnnn байтов). Если nnnn равно 0, то произошла ошибка при вводе длины программы, и необходимо повторить запись cнова.

  1. Машинная адресация

  2. Требования языка ассемблера

  3. Директивы

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

Директива PAGE.

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

Директива TITLE.

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

Директива SEGMENT

Любые программы содержат по крайней мере один сегмент - сегмент кода. В некоторых программах используется сегмент для стековой памяти и сегмент данных для определения данных. Асcемблерная директива для описания сегмента SEGMENT имеет следующий формат:

Имя Директива Операнд имя SEGMENT [параметры] . имя ENDS

Имя сегмента должно обязательно присутствовать, быть уникальным и соответствовать соглашениям для имен в ассемблере.

Директива ENDS

Обозначает конец сегмента. Обе директивы SEGMENT и ENDS должны иметь одинаковые имена.

Директива PROC

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

имя-сегмента SEGMENT PARA имя-процедуры PROC FAR Сегмент . кода . с . одной RET процедурой имя-процедуры ENDP имя-сегмента ENDS

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

Директива ENDP

Определяет конец процедуры и имеет имя, аналогичное имени в директиве PROC.

Директива ASSUME

Процессор использует регистр SS для адресации стека, регистр DS для адресации сегмента данных и регистр CS для адресации cегмента кода. Ассемблеру необходимо сообщить назначение каждого сегмента.

Директива END

Как уже показано, директива ENDS завершает сегмент, а директива ENDP завершает процедуру.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]