Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
assmblr.doc
Скачиваний:
138
Добавлен:
15.03.2015
Размер:
486.4 Кб
Скачать

3. Методические указания к выполнению лабораторной работы

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

Практическая часть лабораторной работы состоит из трёх частей.

1. При помощи инструментального пакета MASM32 создайте и выполните программу на ассемблере, вычисляющую сумму и разность двух чисел: первое число – номер в группе, второе – число, противоположное номеру первой буквы фамилии в алфавите (отрицательное число в дополнительном коде). Противоположным к некоторому х называется число, равное х по абсолютной величине, но обратное по знаку. Сумму и разность переведите вручную в десятичную форму. Исследуйте работу программы в отладчике OllyDbg.

2. Перепишите программу из примера 2, используя процедуру Invoke.

3. Перепишите программу из примера 3, занося параметры функций GetStdHandle и WriteConsoleA в стек без использования процедуры Invoke.

4. Контрольные вопросы

  1. Для чего используется язык ассемблера?

  2. Что такое программа-ассемблер? Какие программы-ассемблеры вы знаете?

  3. Чем программирование в Windows отличается от программирования в DOS?

  4. Что такое функции API и для чего они используются?

  5. Каков порядок вызова функций API? Как передаются параметры функций API? В каком порядке они должны заноситься в стек?

  6. Зачем и каким образом используется процедура Invoke?

  7. Что такое объектный файл? компоновщик?

  8. Для чего используются директивы ассемблера? Какие директивы вам известны?

  9. Для чего к программам на ассемблере подключают библиотеки?

  10. Каково назначение прототипов процедур?

Литература

  1. Бройдо В.Л. Вычислительные системы, сети и телекоммуникации: Учебник для вузов. – СПб.: Питер, 2005. – 703 с.

  2. Зубков С.В. Assembler. Язык неограниченных возможностей. – М.: ДМК Пресс, 1999.

  3. Крупник А.Б. Изучаем Ассемблер – СПб.: Питер, 2005. – 249с.

  4. Пирогов В.Ю. Ассемблер для Windows. – 3-е изд., перераб. и доп. – СПб.: БХВ-Петербург, 2005. – 864 с.

  5. Пятибратов А.П. Вычислительные системы, сети и телекоммуникации: Учебник / А.П. Пятибратов, Л.П. Гудыно, А.А. Кириченко; под ред. А.П. Пятибратова. – 3-е изд., перераб. и доп. - М.: Финансы и статистика, 2005. – 560 с.

  6. Юров В., Хорошенко С. Assembler: учебный курс – СПб.: Питер Ком, 1999. – 672 с.

  7. http://www.wasm.ru. На сайте размещены учебники и статьи, доступны для скачивания программы-ассемблеры.

Лабораторная работа №3 представление данных в памяти компьютера

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

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

2. Основные сведения

2.1. Типы данных

При программировании на языке ассемблера используются данные следующих типов:

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

2.Данные простого типа, описываемые с помощью набора директив резервирования памяти, позволяющих выполнить самые элементарные операции по размещению и инициализации числовой и символьной информации.

3.Данные сложного типа были введены в язык ассемблера с целью облегчения разработки программ. Введение сложных типов данных (массивов, структур, записей, объединений) позволяет несколько сгладить различия между языками высокого уровня и ассемблером.

Данные простого типа:

Байт – восемь последовательно расположенных битов, от 0 до 7, при этом бит 0 является самым младшим значащим битом;

Слово – последовательность из 2 байт, имеющих последовательные адреса. Размер слова – 16 бит; биты в слове нумеруются от 0 до 15. Байт, содержащий нулевой бит, называется младшим байтом, а байт, содержащий 15-й бит – старшим байтом. Микропроцессоры Intel имеют важную особенность – младший байт хранится по меньшему адресу. Адресом слова считается адрес младшего байта.

Двойное слово – последовательность из 4 байт (32 бита), расположенных по последовательным адресам. Слово, содержащее нулевой бит, называется младшим словом, а слово, содержащее 31-й бит, - старшим словом.

Учетверенное слово – последовательность из 8 байт (64 бита), расположенных по последовательным адресам. Адресом учетверенного слова считается адрес его младшего двойного слова.

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

ASM предоставляет очень широкий набор средств описания и обработки данных, который вполне сравним с аналогичными средствами некоторых языков высокого уровня.

Для описания простых типов данных в программе используются специальные директивы резервирования и инициализации данных, которые по сути являются указаниями транслятору на выделение определенного объема памяти. Если проводить аналогию с языками высокого уровня, то директивы резервирования и инициализации данных являются определениями переменных. Машинного эквивалента этим директивам нет. При работе с этими директивами и с дампами памяти не забывайте о принципе <младший байт по младшему адресу>, в соответствии с которым при сохранении данных в памяти младшая часть значения всегда записывается перед старшей частью.

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