Задание к работе. Порядок выполнения
1. Произвести ассемблирование и компоновку программы hello.asm с опциями, предполагающими использование отладчика TD. Повторить программу исследования файла hello.exe в режиме TD, следуя рекомендациям параграфа п. 6.2.4 лабораторной работы. 2. В соответствии с вариантом задания (табл. 1.4) произвести ассемблирование и компоновку программных файлов, с опциями, предполагающими получение листинга и отладочной информации для TD. Для обоих файлов составить диаграмму размещения сегментов в памяти по образцу рис. 1.7. Информация о расположении сегментов любой из программ должна согласовываться также с данными таблицы идентификаторов, расположенной в конце листинга ассемблирования, или с данными файла отображения программы в памяти hello.map.
Рис. 1.7. Диаграмма расположения сегментов программы hello.exe в памяти
3. Работа над собственной программой предстоит на следующем практическом занятии, а на этом полезно будет выяснить, какую помощь в этом плане вы можете ожидать от асссемблера. Создайте копии файлов программ п.п. 2 c видоизменёнными названиями, с целью проведения эксперимента по их ассемблированию (получение листинга: tasm/l < file.asm>) с введёнными синтаксическими ошибками (достаточно 5-7). При введении ошибок, в синтаксически правильно составленные программы, можно руководствоваться содержанием п. 6.2.6. Ошибки вместе с замечаниями на них Turbo Assembler выводит в листинге. Более подробную трактовку о сделанной ошибке можно узнать, обратившись к файлу ошибок ассемблирования Tasm_err.doc [6]. Отчёт по лабораторной работе должен содержать: – диаграмму расположения сегментов в заданных для исследования программах; – работу над синтаксическими ошибками, проведённую для тех же программ; – анализ машинных кодов ассемблерных команд с указанием используемых видов адресации. В анализе необходимо показать непротиворечивость кода, сформированного транслятором, изложенным выше принципам кодирования. Номера команд из сегмента Codeseg, подлежащих анализу, приведены в табл. 1.4. Указанные номера команд идентифицированы цифрами в поле " комментарий" соответствующих файлов. Каждый вариант задания включает анализ 6 команд из двух файлов. Таблица 1.4 Таблица индивидуальных заданий к работе № 1
Контрольные вопросы 1. Запишите команду для ассемблирования файла f_1.asm с учётом формирования листинга и возможности использования отладчика TD. 2. Запишите команду для компоновки файла f_1.obj, разрешающую использование отладчика и запрещающего создание файла отображения. 3. Как определить физический объект в сегментированной модели памяти, если известны его логические компоненты: " Segment – Offset "? 4. Запишите директивы языка ассемблера, управляющие сегментами стека, данных и кода в режиме Ideal (Masm). 5. В чём состоит принципиальная разница между исполняемыми файлами программ типа. exe и . com 6. Запишите команды, определяющие начало и конец программного кода. 7. В чём состоит различие между ошибками и предупреждениями, создаваемыми Tasm во время трансляции? Ваши действия при обнаружении ошибки. 8. После загрузки программы в TD требуется инициализировать сегментный регистр ds на начало сегмента данных. Изложите последовательность ваших действий. 9. Опишите основные форматы команд 16-разрядных процессоров. 10. Изложите состав и назначение полей постбайта (байта адресации) в двухоперандной команде процессора. 11. Укажите на основные отличия в механизме адресации 16- и 32-разрядных процессоров. 12. Какие из приведённых ниже команд записаны с ошибками и почему? Считайте все идентификаторы переменными, которые определены как слова в сегменте данных: mov bp, al mov [op_1+bx+di+12], ax mov [op_1], [op_2] mov ax, [op_3+dx] mov cs, ax mov [bx+si], 2 lea bx, op_2 mov bx, offset [op_2]
|