Методичні вказівки до лабораторних робіт с нормативної дисципліни «Системне програмування»



страница1/11
Дата24.05.2019
Размер0.85 Mb.
#91401
ТипМетодичні вказівки
  1   2   3   4   5   6   7   8   9   10   11


МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ

ЧЕРНИГОВСКИЙ НАЦИОНАЛЬНЫЙ ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ

КАФЕДРА ИНФОРМАЦИОННЫХ И КОМПЬЮТЕРНЫХ СИСТЕМ


Системное программирование
на макроассемблере MASM32

Методические указания к лабораторным работам

по нормативной дисциплине

«Системное программирование»
студентов профессионального направления
6.050102 «Компьютерная инженерия»
Обсуждено и рекомендовано

на заседании кафедры

информационных и
компьютерных систем,
протокол № от . .20 г.

Чернигов ЧНТУ 2014


Системне програмування на макроасемблері MASM32. Методичні вказівки до лабораторних робіт с нормативної дисципліни «Системне програмування» (частина 1) студентів професійного напряму 6.050102 «Комп’ютерна інженерія»/ Укл. Нестеренко С.О. – Чернігів: ЧНТУ, 2014. - с., рос. мовою

Укладач: Нестеренко Сергій Олександрович, кандидат технічних наук, доцент

Відповідальний за випуск: Казимир Володимир Вікторович, завідувач кафедри інформаційних та комп’ютерних систем, доктор технічних наук, професор


Рецензент: Акименко Андрій Миколайович, кандидат фізико-математичних наук, доцент кафедри інформаційних та комп’ютерних систем Чернігівського національного технологічного університету

СОДЕРЖАНИЕ


ВСТУПЛЕНИЕ 4


4


1 РАБОТА С КОНСОЛЬЮ 6

2 ТЕХНОЛОГИЯ СОЗДАНИЯ АССЕМБЛЕРНЫХ ПРОГРАММ 15

3 МАКРОГЕНЕРАТОР И МАКРОСЫ 23

4 КОНСОЛЬНЫЙ ВВОД-ВЫВОД 34

5 МЕХАНИЗМ ИСПОЛЬЗОВАНИЯ ПРОЦЕДУР 44

6 ИССЛЕДОВАНИЕ ОБЪЕКТНЫХ ФАЙЛОВ ФОРМАТА COFF 63

7 ИССЛЕДОВАНИЕ ИСПОЛНЯЕМОГО ЕХЕ-МОДУЛЯ 71

РЕКОМЕНДОВАННАЯ ЛИТЕРАТУРА 79






ВСТУПЛЕНИЕ

Программирование на уровне машинных команд (низкоуровневое) является незаменимым для многих направлений информационных технологий: создание эффективных прикладных программ и драйверов, обратная разработка (reverse engineering), криптография, защита информации и многих, многих других. Причина проста – если вы хотите узнать, что в действительности делает программа – загляните в ее машинный код.

Программными абстракциями машинного кода являются ассемблеры – особые языки программирования, в которых один оператор соответствует одной команде процессора. Ассемблеров существует множество хотя бы потому, что существует множество процессоров с разными наборами исполняемых ими машинных команд. Более того, для одного и того же процессора (к примеру, с архитектурой IA-32/x86) создано несколько ассемблеров с различающимся синтаксисом: tasm, masm, nasm, fasm… Они различаются синтаксисом, эффективностью поддержки разработчиков и функциональной проработанностью. Для разработчиков наибольшее значение имеют, конечно же, функциональность и эффективная поддержка. В этом смысле среди всех известных ассемблеров заметно выделяется Microsoft Macro Assembler, который известен под аббревиатурой MASM32 (32 означает, что поддерживается разработка 32-разрядных приложений). (В дальнейшем изложении мы будем использовать также аббревиатуру «МАСМ», которую следует понимать как «32-разрядный макроассемблер Microsoft MASM32»). МАСМ постоянно поддерживается и развивается корпорацией Microsoft и распространяется ею бесплатно, что, разумеется, способствует усилению его популярности. Именно поэтому МАСМ выбран кафедрой как целевой язык низкоуровневого программирования для изучения в курсе «Системное программирование».

Лабораторный практикум по системному программированию построен по принципу сочетания обязательных работ и работ, выполняемых по желанию студента. В данных методических указаниях приводятся описания только семи обязательных лабораторных работ, выполнение и защита которых может без чрезмерных трудозатрат принести студенту честно заработанную положительную оценку в диапазоне 60-65 баллов ЕКТС. Для получения более высоких оценок по курсу студент должен самостоятельно выполнить и защитить дополнительные работы, содержание и объем которых доводится до студентов в начале семестра изучения настоящей дисциплины. По этим дополнительным работам имеются отдельные методические указания, доступ к которым поможет получить преподаватель, ведущий лабораторные занятия.







Префиксы «венгерской» нотации типов данных в описаниях вызовов функций АPI Win32 (Win64)

В данном лабораторном курсе мы встречаемся со многими идентификаторами, написанными в так называемой «венгерской» нотации, поэтому надо понимать ее смысл. Для этого и приводится данное приложение.

«Венгерская» нотация в программировании — соглашение об именовании переменных, констант и прочих идентификаторов в коде программ. Своё название венгерская нотация получила благодаря программисту компании Microsoft венгерского происхождения Чарльзу Симони (венг. Károly Simonyi), предложившему её ещё во времена разработки первых версий MS-DOS. Эта система стала внутренним стандартом именования в фирме Майкрософт.

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


Таблица А.1 - Префиксы, соответствующие типу


Префикс

Сокращение от

Смысл

Пример

s

string

строка

sClientName

sz

zero-terminated string

строка, ограниченная нулевым символом

szClientName

n, i

number, int

целочисленная переменная

nSize, iSize

l

long

длинное целое

lAmount

b

boolean

булева переменная

bIsEmpty

a

array

массив

aDimensions

t, dt

time, datetime

время, дата и время

tDel, dtShipm

p

pointer

указатель на…

pBox

lp

long pointer

дальний указатель на…

lpBox

r

reference

ссылка на…

rBoxes

h

handle

дескриптор

hWindow

m_

member

переменная-член класса

m_sAddress

g_

global

глобальная переменная

g_nSpeed

C

class

класс

CString

T

type

тип

TObject

I

interface

интерфейс

IDispatch

v

void

отсутствие типа

vReserved






Поделитесь с Вашими друзьями:
  1   2   3   4   5   6   7   8   9   10   11




База данных защищена авторским правом ©vossta.ru 2022
обратиться к администрации

    Главная страница