
- •Министерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение
- •«Комсомольский-на-Амуре государственный технический университет»
- •Комсомольск-на-Амуре 2013
- •Рецензент в.А. Егоров
- •1 Основные сведения
- •New cs:ip
- •2 Задание к лабораторной работе
- •Контрольные вопросы
2 Задание к лабораторной работе
2.1 Чтение и запись в порт В (с адресом 0061) программируемого периферийного адаптера (ППА) I8255.
Хотя уже давно программируемые контроллеры, которые использовались в первых компьютерах IBM PC в виде отдельных микросхем, интегрированы в состав БИС чипсета, для пользователя адреса их портов остались первоначальными.
2.1.1 Прочитать содержимое порта 61h. Для этого воспользоваться командой I/O > и In byte локального меню подокна кода. В верхней части появившегося окна будет подсказка, что нужно ввести номер порта в шестнадцатиричном виде. После выполнения команды на экране появится окно с десятичными и шестнадцатиричными значениями номера порта и его содержимого.
2.1.2 Последовательно записать в порт 61h значения 33h, 30h и 33h. Для этого воспользоваться командой I/O > и Out byte локального меню подокна кода. В верхней части появившегося окна будет подсказка, что нужно ввести номер порта и через запятую значение для вывода. Результат будет услышан: включится динамик. Для его выключения необходимо записать в порт 61h число 30h.
2.2 Определение даты BIOS компьютера.
«Заглянуть» в ПЗУ BIOS по физическому адресу FFFF516, чтобы определить дату BIOS компьютера. Используя команду Goto локального меню подокна данных, индицировать область оперативной памяти BIOS с адреса FFFF:5. Обратите внимание, что при вводе число должно начинаться с цифры, а не с буквы. То есть правильно указывать логический адрес так 0FFFF:5.
2.3 Определение количества последовательных и параллельных портов и их базовых адресов.
При загрузке компьютера программа BIOS загружает базовые (начальные) адреса основных портов в начало оперативной памяти начиная с физического адреса 102410=40016 (логический адрес 40:0).
Используя команду Goto локального меню подокна данных, индицировать область оперативной памяти BIOS с адреса 40:0. Поскольку адреса портов двухбайтовые и принято размещать числа в памяти начиная с младшего байта, то базовый адрес, например, порта СОM2 будет 02F8. Результаты занести в приведенную таблицу.
Адрес памяти |
Порт |
Базовый адрес порта |
40:0 |
СOM1 |
|
40:2 |
СОM2 |
02F8 |
40:4 |
СOM3 |
|
40:6 |
СOM4 |
|
40:8 |
LPT1 |
|
40:A |
LPT2 |
|
40:C |
LPT3 |
|
2.4 Модификация и выполнение текущей программы.
2.4.1 Зайти в подокно кода и выделить инструкцию с указателем в виде стрелки. Набрать следующий фрагмент программы, подтверждая ввод каждой новой инструкции нажатием клавиши «Enter»:
MOV AX, 1234
MOV DX, 2345
ADD DX, AX
MOV BX, DX
SUB DX, DX
2.4.2 Выполнить данный фрагмент в режиме трассировки. Для этого выделить цветом первую набранную команду (помеченную стрелкой) и, нажимая клавишу F7, трассировать программу. Обратите внимание, что изменяющиеся значения подсвечиваются белым цветом. Например, в подокне регистров подсвечиваются соответствующие регистры, а после выполнения инструкции «SUB DX, DX» в подокне флагов устанавливаются флаги нулевого результата z и паритета p.
2.5 Создание нового файла с произвольным содержимым.
2.5.1 Войти в подокно данных. Выделить первый байт и набрать 16 чисел: 00h, 11h, 22h, 33h, 44h, 55h, 66h, 77h, 88h, 99h, 0AAh, 0BBh, 0CCh, 0DDh, 0EEh, 0FFh.
2.5.2 Записать данную комбинацию в файл PPSU.DAT. Для этого вызвать команду Block локального меню и ее подкоманду Write.
2.5.3 Ввести название файла PPSU.DAT <Enter>.
2.5.4 Указать начальный шестнадцатиричный адрес блока и после запятой его размер.
2.5.5 Выйти в Windows и проверить наличие записанного файла и его размер. Учтите, что файл с произвольным содержимым можно полностью просмотреть, используя шестнадцатиричные редакторы. Текстовые редакторы отобразят только коды, имеющие символьное представление.
2.6 Создание исполняемой программы и выполнение ее под управлением отладчика.
2.6.1 Получить у преподавателя вариант текста исходной программы на ассемблере.
2.6.2 С помощью Турбо Ассемблера (TASM) получить объектный файл и листинг программы. При наличии синтаксических ошибок исправить их. В командную строку TASM поместить опцию /zi, включающую в объектный файл информацию об оригинальных идентификаторах программы для отладки.
2.6.3 С помощью редактора связей TLINK получить исполняемый файл программы.
2.6.4 Запустить программу и убедиться в ее работоспособности или неработоспособности.
2.6.5 Распечатать листинг программы.
2.6.6. Запустить Турбо Отладчик (TD). С помощью опции верхнего меню File и подопции Open загрузить в отладчик свою исполняемую программу.
2.6.7 Нажимая клавишу F7 начать трассировку программы. Наблюдать изменение содержимого регистров, флагов и памяти. Выполнение программы под управлением отладчика отслеживать по ее листингу.
При наличии в программе длительных циклов или подпрограмм может потребоваться относительно большое число шагов. Для быстрого выполнения таких участков программы выделите цветом команду после участка и нажмите клавишу F4. Участок программы выполнится до выделенной команды.
2.6.8 Важным преимуществом оконного отладчика Turbo Debugger по сравнению со строковым отладчиком Debug.exe является использование отдельных окон для отладки и для вывода программы пользователя.
Зайти в верхнее меню, выбрать опцию Window, а в ней подопцию User screen. На экране должно появиться окно с выводом пользовательской программы. Для выхода в окно отладки нажать любую клавишу.
2.6.9. Продолжить трассировку программы с периодическим просмотром окна пользователя. Если в программе были логические ошибки, попытаться их обнаружить. Если ошибки найдены, нужно заново отредактировать текст программы, выполнить ее ассемблирование и связывание.