Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Asm_lab-Rus.docx
Скачиваний:
12
Добавлен:
27.08.2019
Размер:
239 Кб
Скачать
☆
    1. Содержание отчета

Отчет должен содержать: цель работы, задание, описание алгоритма работы программы, распечатку исходных текстов программы с выводом полной информации о памяти до и после выделения памяти разных типов и пояснениями, результаты, выводы с описанием сложностей возникших при выполнении работы и объяснением полученных результатов.

    1. В данной лабораторной работе необходимо выполнить следующее:

  1. Определить системную информацию, касающуюся памяти, в начале программы.

  2. Определить максимальный размер памяти, которая может быть выделена для виртуальной и физической памяти.

  3. Выделить виртуальную память и определить изменения в системной информации до и после выполнения.

  4. Выделить физическую память и определить изменения в системной информации до и после выполнения.

  5. Сделать последовательное освобождение выделенной памяти.

  6. Определить последовательные адреса выделяемых блоков памяти и сделать вывод о целесообразности выделения памяти маленькими порциями.

  7. Проверить заполняемость памяти при выделении виртуальной, физической памяти.

  8. Проверить возможность доступа к памяти, за пределами выделенной области.

    1. Задания на лабораторную работу.

  1. Построить связной список, содержащий в качестве данных матрицу чисел вводимую пользователем с клавиатуры.

  2. Построить связной список, содержащий в качестве данных информацию о студентах: № зачетной книжки, Фамилия, Имя, Отчество, Дата рождения, Группа.

  3. Построить связной список, содержащий в качестве данных информацию о файлах и директориях в заданном каталоге. В информацию включается: имя файла, полный путь к файлу, дата последнего изменения, атрибуты.

  4. Построить связной список, содержащий в качестве данных Текстовое сообщение (может содержать спецсимволы), дату и время получения текстового сообщения.

  5. Построить связной список, содержащий в качестве данных информацию о книге: Название, автор, код ISBN, издательство, год выпуска, аннотация.

  6. Построить связной список, содержащий в качестве данных информацию о состоянии памяти: кол-во занятой памяти, кол-во свободной памяти.

  7. Построить связной список, содержащий в качестве данных информацию о существующих разделах жесткого диска.

  8. Построить связной список, содержащий в качестве данных информацию о продукции на складе: наименование товара, аннотация, количество, имя и адрес поставщика.

  9. Построить связной список, содержащий в качестве данных информацию о телефонах сотрудников фирмы: имя сотрудника, адрес, телефон домашний, телефон мобильный.

    1. Контрольные вопросы и задания

  1. Дайте определение различных типов памяти.

  2. Объясните действия, необходимые для выделения памяти с точки зрения программиста и операционной системы.

  3. Какая информация о памяти может быть получена и где используется эта информация?

  4. Какие атрибуты могут быть заданы для страниц?

  5. Чем определяется максимальный размер физической памяти, который может быть выделен одной операцией выделения.

  6. Каким образом память освобождается, что будет, если: программист забыл освободить память; в связи с аварийным завершением программы она не дошла до кода освобождения?

  7. Что будет, если не предусмотрена проверка благополучности выделения памяти и используется фактически не выделенная память?

  8. Что будет, если используется больший объем памяти, чем выделено.

  1. Лабораторная работа №5 Создание программ зависящих от таймера.

    1. Цель работы

Ознакомление с функциональными возможностями систем программирования на языке ассемблер, структурой подпрограмм – обработчиков событий от таймера, особенностями построения подпрограмм обратного вызова и их отладки.

    1. Указания по подготовке к выполнению лабораторной работы

При подготовке к выполнению лабораторной работы необходимо ознакомится с материалом лекций, который посвящен структуре подпрограмм – обработчиков событий от таймера и способов их вызова.

    1. Рекомендации по выполнению лабораторной работы

Для выполнения лабораторной работы необходимо запустить среду разработки \masm32\QEDITOR и набрать в ней тексты программ. Общая структура консольной программы содержащей обработчики событий от таймера приведена в листинге 4.

;Таймер в консольном режиме.

.586P

;плоская модель

.MODEL FLAT, stdcall

;директивы компоновщику для подключения библиотек

include \masm32\include\windows.inc

include \masm32\include\user32.inc

include \masm32\include \kernel32.inc

include \masm32\include \winmm.inc

includelib \masm32\lib\user32.lib

includelib \masm32\lib\kernel32.lib

includelib \masm32\lib\winmm.lib

;-----------------------------------------------

COOR STRUC

X DD ?

Y DD ?

Z DD ?

COOR ENDS

;константы

TIME_PERIODIC equ 1 ;тип вызова таймера

;сегмент данных

.data

coef DD 1,2,3 ;согласно заданию

CRD COOR <1,2> ;согласно заданию

ID DWORD ? ;идентификатор таймера

BUF DB 20 dup(?) ;буфер для преобразования числа в строку

;сегмент кода

.code

START:

;образовать консоль

. . .

;установить таймер

PUSH TIME_PERIODIC ;периодический вызов

PUSH 0

PUSH OFFSET TIME ;вызываемая таймером процедура

PUSH 0 ;точность вызова таймера

PUSH 1000 ;вызов через одну секунду

CALL timeSetEvent

MOV ID,EAX ;сохранить ID таймера

;дальнейший код программы

. . .

;закрыть таймер

PUSH ID

CALL timeKillEvent

;завершить работу программы

PUSH 0

CALL ExitProcess

;процедура обратного вызова, обработчик таймера,

;вызываемая операционной системой

TIME PROC TimeID:DWORD, TimeRsv2:DWORD, TimeDat:DWORD, TimeRsv4:Dword, TimeRsv5:DWORD

PUSHA ;сохранить все регистры

;код подпрограммы обработки события от таймера

. . .

POPA ;восстановить все регистры

RET 20 ;выход с освобождением стека

TIME ENDP

END START

Для консольных приложений следует использовать функцию timeSetEvent.

Вот параметры этой функции:

1-й параметр — время задержки таймера, это время совпадает со временем между двумя вызовами таймера;

2-й параметр — точность работы таймера (приоритет посылки сообще­ния);

3-й параметр — адрес вызываемой процедуры;

4-й параметр — параметр, посылаемый в процедуру;

5-й параметр — тип вызова — одиночный или периодический.

Если функция завершилась удачно, то в ЕАХ возвращается идентификатор таймера, иначе в EAX – 0.

Сама вызываемая процедура получает также 5 параметров:

1-й параметр — идентификатор таймера;

2-й параметр — не используется;

3-й параметр — параметр Dat (см. timeSetEvent);

4-й и 5-й параметры — не используются.

Для удаления таймера используется функция timeKillEvent, параметром которой является идентификатор таймера.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]