![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
END OUR_PROG;
- обеспечение выхода из программы, например, используя функцию 4С прерывания 21Н, как показано ниже: MOV AX, 4C00Н INT 21H или оформив основную программу как процедуру с атрибутом FAR и стандартным выходом из процедуры RET, как показано в приведенной ниже программе.
Пример программы на Ассемблере TITLE EX_PROG PAGE, 132 STACK SEGMENT PARA STACK ‘STACK’ DB 64 DUP(‘STACK ’); Область стека STACK ENDS DSEG SEGMENT PARA PUBLIC ‘DATA’ SOURCE DB 10, 20, 30, 40; эта таблица будет скопирована DEST DB 4 DUP(?); в эту таблицу в обратном порядке DSEG ENDS SUBTTL ОСНОВНАЯ ПРОГРАММА PAGE CSEG SEGMENT PARA PUBLIC ‘CODE’ ASSUME CS: CSEG, DS: DSEG, SS: STACK OUR_PROG PROC FAR ; занести в стек такие начальные значения, чтобы программа ; могла возвратить управление отладчику PUSH DS; поместить в стек номер блока адреса возврата SUB AX, AX; обнулить регистр АХ, тоже можно сделать командой MOV AX, 0 PUSH AX; поместить в стек значение адреса возврата=0 ; инициировать адрес сегмента данных MOV AX, DSEG MOV DS, AX ; присвоить элементам таблицы DEST нулевые начальные значения MOV DEST, 0; обнуление 1-ого байта MOV DEST+1, 0; обнуление 2-ого байта MOV DEST+2, 0; обнуление 3-его байта MOV DEST+3, 0; обнуление 4-ого байта ; скопировать таблицу SOURCE в таблицу DEST в обратном порядке, в качестве промежуточной ячейки пересылки использовать регистр AL MOV AL, SOURCE MOV DEST+3, AL MOV AL, SOURCE+1 MOV DEST+2, AL MOV AL, SOURCE+2 MOV DEST+1, AL MOV AL, SOURCE+3 MOV DEST, AL RET; возврат управления отладчику db OUR_PROG ENDP CSEG ENDS END OUR_PROG
ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ 1. Набрать приведенную в тексте программу на ассемблере с использованием редактора текста. 2. Оттранслировать программу в объектный код. 3. Скомпоновать программу (получить исполнимый файл). Изучить листинг программы. 4. Провести отладку программы и проверить получаемые результаты. 5. Внести в программу следующие изменения: задать исходную таблицу SOURCE из 5 двухбайтовых шестнадцатеричных переменных и скопировать эту новую таблицу в DEST. 6. В сегменте данных определить переменные, заполнив их следующими значениями: - 5 байтов A, B, C, D, E; - 5 двухбайтовых слов AA, BB, CC, DD, EE; - 5 двойных слов AAAA, BBBB, CCCC, DDDD, EEEE; 7. Получить исполнимый файл программы с данными пункта 6и изучить дамп памяти данных с целью уяснения механизма выравнивания. СОДЕРЖАНИЕ ОТЧЕТА
Отчет должен включать: а) титульный лист; б) формулировку цели работы; в) описание результатов выполнения пунктов 3-7: • листинги программ; • результаты выполнения программ; г) выводы, согласованные с целью работы.
Контрольные вопросы 1. Какие группы регистров выделяются в микропроцессоре и каковы особенности их использования? 2. Какую функцию в микропроцессоре выполняет регистр флагов? 3. Как используется регистр команд IP? 4. Какие шаги необходимо выполнить для получения из программы на языке ассемблера исполняемого модуля? 5. Прокомментируйте содержание листинга программы. 6. В каких окнах и в каком виде отображается состояние микропроцессора при отладке программ с применением отладчика td.exe?
|