Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






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?






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.