
- •8.091402 “Системы управления и автоматики”
- •Введение
- •Порядок выполнения работы.
- •Задания на лабораторную работу.
- •Содержание отчета.
- •Контрольные вопросы.
- •Лабораторная работа №2 Изучение способов организации ветвлений и циклов на языке ассемблер
- •Цель работы
- •Указания по подготовке к выполнению лабораторной работы
- •Строковые операции
- •Копирование строки
- •Сравнение строк
- •Сканирование строки.
- •Чтение из строки
- •Запись в строку
- •Чтение строки из порта
- •Запись строки в порт
- •Рекомендации по выполнению лабораторной работы
- •Задания на лабораторную работу.
- •Содержание отчета.
- •Контрольные вопросы.
- •Искажение имен
- •Подключение библиотек
- •Задания на лабораторную работу.
- •Содержание отчета.
- •Контрольные вопросы.
- •Лабораторная работа №4 Управление памятью.
- •Цель работы
- •Указания по подготовке к выполнению лабораторной работы
- •Содержание отчета
- •В данной лабораторной работе необходимо выполнить следующее:
- •Задания на лабораторную работу.
- •Контрольные вопросы и задания
- •Задания на лабораторную работу.
- •Содержание отчета.
- •Контрольные вопросы.
- •Задания на лабораторную работу.
- •Задания на лабораторную работу.
- •Содержание отчета.
- •Контрольные вопросы.
- •Надруковано в учбово-виробничому
- •61166, Харкiв, просп. Ленiна, 14.
Содержание отчета.
Отчет должен содержать:
Цель работы, задание, алгоритм работы программы и его вербальное описание, распечатку исходных текстов программы с комментариями, результаты работы программы, выводы.
Контрольные вопросы.
С помощью каких директив можно задать данные и их размер?
Какие способы адресации вы знаете?
Какие способы адресации использованы в вашей программе?
Чем отличается косвенная адресация от адресации по базе со сдвигом?
Каким образом различается представление знаковых чисел от беззнаковых в памяти ЭВМ?
Каким образом различается представление чисел от строк в памяти ЭВМ?
Что такое регистры? Какие регистры общего назначения Вы знаете?
Какие регистры общего назначения могут быть использованы в качестве индексов массива?
Какие команды помогают организовать ветвление в программе? Покажите их в тексте программы.
Каким образом можно организовать цикл типа for?
Каким образом можно организовать цикл типа do while?
Каким образом осуществляется выполнение команд условного перехода?
Что такое регистр флагов? Когда он используется?
Каким образом осуществляется сравнение в программах на языке ассемблер?
Каким образом осуществляется представление строковых данных в памяти ЭВМ?
Лабораторная работа №3 Организация подпрограмм, создание динамических библиотек.
Цель работы
Ознакомление с функциональными возможностями систем программирования на языке ассемблер, структурой динамической библиотеки, основными командами и директивами для создания динамических библиотек на языке программирования ассемблер. Получить навыки составления и отладки динамических библиотек в многозадачной среде.
Указания по подготовке к выполнению лабораторной работы
При подготовке к выполнению лабораторной работы необходимо ознакомится с материалом лекций, который посвящен организации подпрограмм, способам передачи параметров в подпрограмму, конвенциям по вызову подпрограмм, связью ассемблера с языками высокого уровня, структуре динамических библиотек, способам загрузки библиотек и вызова функций из них, организации адресного пространства.
Рекомендации по выполнению лабораторной работы
Для выполнения лабораторной работы необходимо запустить среду разработки \masm32\QEDITOR и набрать в ней тексты программ и текст библиотеки.
Структура динамической библиотеки.
Общая структура динамической библиотеки приведена в листинге 3.
.586
.model flat, stdcall
option casemap :none ; с учетом регистра
; ««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
; подключение внешних библиотек и их описаний
include \masm32\include\windows.inc
include \masm32\include\masm32.inc
include \masm32\include\kernel32.inc
include \masm32\macros\macros.asm
includelib \masm32\lib\masm32.lib
includelib \masm32\lib\kernel32.lib
.data
; Объявление данных
. . .
.code
;сообщения, приходящие при открытии либо закрытии
;динамической библиотеки
DLL_PROCESS_DETACH equ 0
DLL_PROCESS_ATTACH equ 1
DLL_THREAD_ATTACH equ 2
DLL_THREAD_DETACH equ 3
;точка входа в библиотеку
DllEntryPoint PROC DllId:DWORD,DllEvent:DWORD,DllReserv:DWORD
MOV EAX, DllEvent
CMP EAX, DLL_PROCESS_DETACH
JNE D1
;код при закрытии библиотеки (если необходим)
. . .
JMP _EXIT
D1:
CMP EAX, DLL_PROCESS_ATTACH
JNE _EXIT
;код при загрузке библиотеки (если необходим)
. . .
_EXIT:
MOV EAX,1 ;процедура входа должна
RET 12 ;возвращать не нулевое значение
DllEntryPoint endp
; ««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
; Код подпрограмм библиотеки
. . .
END DllEntryPoint
При написании библиотек следует обратить внимание на то, что если подпрограмма должна быть доступна процессу, загрузившему библиотеку, то эта подпрограмма должна быть описана с использованием ключевого слова EXPORT.