Xa (allocate expanded memory)
Выделение заданного количества страниц памяти EMS. Выполненная без параметров подкоманда xa проверяет наличие или отсутствие поддержки дополнительной памяти (EMS).
xa[число_страниц]
число_страниц памяти EMS. Размер страницы составляет 16 килобайт.
Система Windows XP не поддерживает память EMS. Для использования памяти EMS на компьютере должен быть установлен драйвер памяти EMS, поддерживающий версию 4.0 спецификации Lotus/Intel/Microsoft Expanded Memory Specification (LIM EMS). Если запрашиваемое количество страниц доступно, Debug.exe выводит сообщение о шестнадцатеричном номере созданного дескриптора. В противном случае выводится сообщение об ошибке.
Примеры
Чтобы выделить восемь страниц дополнительной памяти, введите следующую команду:
Xa8
Если команда успешно выделит память, выводятся следующие сведения:
Создандескриптор=0003
Xd (deallocateexpandedmemory)
Освобождение дескриптора памяти EMS. Выполненная без параметров подкоманда xd проверяет наличие или отсутствие поддержки дополнительной памяти (EMS).
xd [дескриптор]
дескриптор - освобождаемый дескриптор.
Система Windows XP не поддерживает память EMS. Для использования памяти EMS на компьютере должен быть установлен драйвер памяти EMS, поддерживающий версию 4.0 спецификации Lotus/Intel/Microsoft Expanded Memory Specification (LIM EMS).
Примеры
Чтобы освободить дескриптор 0003, введите следующую команду:
Xd 0003
При успешном выполнении программы Debug.exe будет выведено сообщение:
Дескриптор 0003 освобожден
Xm (мар expanded memory pages)
Отображение логической страницы памяти EMS, соответствующей заданному дескриптору, в физическую страницу памяти EMS. Выполненная без параметров подкоманда xm проверяет наличие или отсутствие поддержки памяти EMS.
xm[лог_страница] [физ_страница] [дескриптор]
лог_страница- номер логической страницы памяти EMS, которая будет отображена в физическую страницу физ_страница.
физ_страница- номер физической страницы памяти EMS, в которую будет отображена логическая страница лог_страница.
дескриптор- задание дескриптора.
Система Windows XP не поддерживает память EMS. Для использования памяти EMS на компьютере должен быть установлен драйвер памяти EMS, поддерживающий версию 4.0 спецификации Lotus/Intel/Microsoft Expanded Memory Specification (LIM EMS).
Примеры
Чтобы отобразить логическую страницу 5 дескриптора 0003 в физическую страницу 2, введите следующую команду:
Xm 5 2 0003
При успешном выполнении программы Debug.exe будет выведено сообщение:
Логическая страница 05 отображена на физическую страницу 02
Xs (display expanded memory status)
Вывод сведений о состоянии памяти EMS.
xs
Для использования памяти EMS на компьютере должен быть установлен драйвер памяти EMS, поддерживающий версию 4.0 спецификации Lotus/Intel/Microsoft Expanded Memory Specification (LIM EMS). Результаты программы Debug.exe выводятся в следующем формате:
Для дескриптора xx выделено xx страниц
Физическая страница xx = Сегмент EMS xx
Выделено xx из xx страниц EMS
Выделено xx из xx дескрипторов EMS
Примеры
Чтобы вывести сведения о состоянии памяти EMS, введите следующую команду:
xs
Подкоманда xs выводит сведения в следующем виде:
Handle 0000 has 0000 pages allocated
Для дескриптора 0001 выделено 0002 страниц
Физическая страница 00 = Сегмент EMS C000
Физическая страница 01 = Сегмент EMS C400
Физическая страница 02 = Сегмент EMS C800
Физическая страница 03 = Сегмент EMS CC00
Выделено 2 из 80 страниц EMS
Выделено 2 из FF дескрипторов EMS
Перечень заданий
1. Изучить назначение и функциональные возможности отладчика программ DEBUG:
· вызвать отладчик DEBUG
· посмотреть содержимое регистров МП (команда R с необходимыми опциями): AX, CX, SS, SP, CS, IP и других (всех сразу и нескольких по очереди);
· записать все команды и информацию, выводимую на экран;
· расшифровать полученные сообщения: структуру и содержание;
· пояснить сообщения о состоянии флагов регистра F.
2. Посмотреть и записать содержимое некоторых ячеек ОП (команда D с необходимыми опциями) в ячейках с соответствующими векторами адресов посмотреть интересную информацию о компьютере.
Адреса:
f000:fffe(1 байт) — тип машины (ff—PC, fe—XT, fc—AT и др.);
ffff:05 (8 байт) — дата создания загруженной BIOS в формате mm/дд/гг;
0000:413 (2байт) — объем доступного пользователю ОЗУ (в Кб).
При написании отчета по лабораторной работе расшифровать и пояснить увиденную информацию, указать, к какому типу RAM или ROM относится просматриваемая ячейка.
3. Ввести информацию в некоторые регистры и ячейки памяти (команды R, E и F с необходимыми опциями):
· ввести несколько различных чисел в регистры МП и ячейки памяти. Записать все поданные команды и вводимую информацию;
· ввести в несколько последовательных ячеек памяти строкоую информацию: факультет, N группы, ФИО студентов и любой текст из 10—20 слов, предпочтительно на английском языке;
· проверить правильность записи информации в указанные ячейки; посмотреть и записать вектор—адреса каждой ячейки и ту часть текста, которая в них находится.
Bнимание.Чтобы не портить основные файлы операционнойсистемы и и не пытаться записать информацию в область ПЗУ использовать ячейки памяти в сегментах 1000—9FFF.
4. Осуществить поиск информации в тексте (команда S с необходимыми опциями). Последовательно указать 2–3 слова в разных местах введенного текста и записать полученные из машины вектор–адреса ячеек, содержащих эти слова.
5. Ввести ассемблерную программу и создать фрагмент программы с расширением .COM. Введите любой фрагмент ассемблерной программы, содержащий несколько строк, например:
mov ax,15
mov bx,5
add ax,bx
div bx
Для этого:
· ввести команду –а;
· после появления на экране вектор–адреса типа ХХХХ:0100 ввести первую строку программы (если смещение вектор–адреса не будет равно 0100, повторно ввести команду -а, но с адресом 100,т.е.:-а100);
· после ввода очередной строки и нажатия клавиши ENTER, появляется следующий вектор–адрес;
· ввести очередную строку программы, и так до конца программы;
· после набора всех строк программы нажать клавишу ENTER два раза (1 раз— перевод строки, 2 раз— окончание набора программы). В результате будет сформирован фрагмент программы с расширением .COM;
· записать всю программу с вектор–адресами команд.
6. Отладить и выполнить полученную программу в режиме трассировки:
· посмотреть содержимое всех регистров МП и первую команду программы ( команда R);
· записать полученное сообщение;
· выполнить первую и последующие команды программы в режиме трассировки (команда Т).
Записать и проанализировать полученные после каждого шага выполнения программы сообщения. Если обнаружится, что программа содержит ошибку, то с целью изменения информации в соответствующей команде программы, используйте команду Е.
7. Записать отлаженную программу на диск:
· записать в регистр BX нуль, в регистр СХ — длину программы в байтах (длину программы рассчитать для записанной в предыдущем задании программы, как разность смещений последней и первой команд программы + длина последней команды );
· присвоить программе имя: —n диск:prog1.com (работаем на дисководе диск);
· ввести команду записи на диск: –w;
· покинуть Debug (команда –q) и посмотреть наличие программы на диске, используя команду DIR.
8. Загрузить программу в отладчик Debug:
· загрузить Debug;
· в отладчике ввести в регистр Cх длину программы, в регистр Bx — 0 (обнулить), объявить имя программы (–n диск:prog1.com) и ввести команду загрузки -L.
9. Деассемблировать программу (команда –u)
Имея в виду, что Debug обычно загружает программу в память с вектор–адресом начальной ячейки CS:0100, набрать –u100 Lk, где k длина загруженной программы (или ее просматриваемой части).Записать и проанализировать структуру и содержание полученного сообщения.
10. Изменить команду в исполняемой программе:
· выбрать подлежащую изменению команду, например, в prog1.com изменить команду add (сложение) на sub (вычитание);
· изменить машинный код команды в соответствующей ячейке памяти, используя команду –e. Машинный код вновь используемой команды можно либо посмотреть в листингах прежних программ, либо специально ассемблировать и деассемблировать новую строку в программе;
· выполнить измененную программу в режиме трассировки и записать все полученные сообщения с кратким их анализом;
· записать новую программу под именем prog2.com на диск;
· выйти из Debug и посмотреть наличие этой программы на диске;
· выполнить команду DIR и записать все реквизиты файлов prog1.com и prog2.com, а также каких нибудь двух файлов с расширением .TXT и .EXE.
11. Просмотр файлов в Debug.
Загрузить выбранный текстовый файл в отладчик Debug, в командной строке командного процессора Command.com набрать Debug путь\имя_файла.txt
Загрузить выбранный исполняемый файл в отладчик Debug, в командной строке командного процессора набрать:
Debug путь\имя_файла.exe
Используя команду D посмотреть ASCII—коды и ASCII—символы фрагмента загруженного текстового файла (примерно 200 ячеек). Записать и проанализировать их.
Используя команду D посмотреть ассемблерный код фрагмента программы с расширением .EXE и пояснить его.
12. Показать все записанные результаты работы преподавателю.
Содержание отчета
Отчет должен содержать:
· краткие сведения об отладчике Debug;
· описание всех процедур и экраны диалога по всем заданиям работы;
· анализ полученных сообщений при выполнении заданий 2, 6, 9, 10, 11, 12.