855324
столько раз учителя, ученики и родители
посетили сайт «Инфоурок»
за прошедшие 24 часа
+Добавить материал
и получить бесплатное
свидетельство о публикации
в СМИ №ФС77-60625 от 20.01.2015
Дистанционные курсы профессиональной переподготовки и повышения квалификации для педагогов

Дистанционные курсы для педагогов - курсы профессиональной переподготовки от 1.410 руб.;
- курсы повышения квалификации от 430 руб.
Московские документы для аттестации

ВЫБРАТЬ КУРС СО СКИДКОЙ ДО 90%

ВНИМАНИЕ: Скидка действует ТОЛЬКО до конца апреля!

(Лицензия на осуществление образовательной деятельности №038767 выдана ООО "Столичный учебный центр", г.Москва)

ИнфоурокИнформатикаДругие методич. материалыИзучение массивов на языке Ассемблер

Изучение массивов на языке Ассемблер

библиотека
материалов
Скачать материал целиком можно бесплатно по ссылке внизу страницы.

Лабораторная работа


Массивы.


Цель: На примере нахождения простых чисел использование массивов.


Ход работы.


Мы почти готовы создать программу, которая ищет простые числа. Осталось только решить, где они будут храниться. Можно, конечно, использовать для этого стек, но в такой памяти положение чисел относитель­но вершины постоянно меняется, потому что в стеке временно хранятся регистры и адреса возврата для про­цедур. Найти простые числа в стеке будет непросто.

Будем поэтому хранить найденные числа в обычной памяти — одно за другим. Если каждому числу выде­лить участок памяти одного размера (например, два байта), то получить адрес любого из них будет крайне просто, если, конечно, знать адрес начала области па­мяти и номер. Номер числа мы будем задавать сами, адрес же начала однозначно определяет метка.

Программа, показанная в листинге 1, сохраняет 20 чисел (от 1 до 20) в области памяти, начало кото­рой помечено символами simple.


Листинг 1. Сохранение чисел от 1 до 20 в памяти


.386

.model flat, stdcall

option casemap:none

include \asm\include\kernel32.inc

includelib \asm\lib\kernel32.lib

BSIZE equ 20

.data?

simple dw BSIZE dup(?)

.code

start:

mov ecx, BSIZE

mov bx, 1

mov edi, 0

nxt:

mov simple[edi].bx

inc bx

add edi, 2 ;переход к следующему числу

loop nxt

invoke ExitProcess, 0

end start


Директива simple dw BSIZE dup(?) выделяет область памяти, часто называемую массивом, для BSIZE идущих под ряд 2-байтовых слов. Переписать число из регистра bх в нулевое слово этой последовательности можно инструкцией mov simple, bх. Для доступа к первому, второму и т. д. слову в ассемблере есть специальный способ адресации, примененный в программе из листинга 4.5. Предположим, что регистр edi хранит адрес слова, вычисленный относительно начала массива. Тогда само слово будет выглядеть как simple[edi ]. Пусть, например, edi равен 2. Тогда инструкция mov simple[edi], bx записывает содержимое bx в первое слово массива. Если edi равен 0, запись идет в нулевое слово, если равен 4 — во второе и т. д.

В программе из листинга 1 мы записываем числа от 1 до 20 в последовательные ячейки массива. Чтобы перейти к следующей ячейке, edi увеличивается на 2, ведь в нашем массиве хранятся 2-байтовые слова.

Но чтобы получить доступ, скажем, к пятой ячейке, совсем не обязательно проходить через предыдущие четыре. Например, запись числа 19 в пятый элемент нашего массива будет выглядеть так:

mov edi, 5 ;номер элемента массива

add edi, edi ;умножаем на 2

mov simple[edi], 19

В этом фрагменте edi удваивается, потому что наш массив хранит 2-байтовые слова. Если бы там были двой­ные слова, пришлось бы научиться умножать edi на 4.

Нумерацию в массиве будем вести с нуля. Если, скажем, в массиве 10 чисел, то их номера будут 0,1, 2,3,4, 5, 6, 7, 8, 9.

Кроме edi для доступа к элементам массива можно использовать те же регистры, что и при косвенной ад­ресации, то есть еах, ebx, ecx, edx, ebp, esi. Вообще, доступ к эле­ментам массива можно рассматривать как расширен­ную косвенную адресацию, ведь инструкцию mov simple[edi], bx можно, оказывается, переписать как mov [simple+edi], bx. А это, по сути, косвенная адресация, где адрес в квадратных скобках, равен сумме адреса, связанного с меткой, и относительного адреса (относи­тельно начала массива), хранящегося в регистре edi.

Если верна инструкция mov [simple+edi], 19, то дол­жен быть смысл и в инструкции mov [simple], 19. Ло­гично предположить, что так записывается число в ну­левой элемент массива. Но мы уже знаем, что это можно проделать инструкцией mov simple, 19. Значит, метка в квадратных скобках так же хороша, как и метка без них. В любом случае ассемблер будет считать, что это адрес компьютерной памяти.


Индивидуальные задания.


Вариант

Задание

1

Сохранение в массиве чисел от 4 до 16 с шагом 2. Каждую инструкцию программы дополнить комментариями. Объяснить полученный результат.

2

Сохранение в массиве чисел от 3 до 15 с шагом 3. Каждую инструкцию программы дополнить комментариями. Объяснить полученный результат.

3

Сохранение в массиве чисел от 2 до 10 с шагом 1. Каждую инструкцию программы дополнить комментариями. Объяснить полученный результат.

4

Сохранение в массиве чисел от 1 до 17 с шагом 4. Каждую инструкцию программы дополнить комментариями. Объяснить полученный результат.

5

Сохранение в массиве чисел от 5 до 15 с шагом 1. Каждую инструкцию программы дополнить комментариями. Объяснить полученный результат.

6

Сохранение в массиве чисел от 3 до 21 с шагом 3. Каждую инструкцию программы дополнить комментариями. Объяснить полученный результат.

7

Сохранение в массиве чисел от 2 до 18 с шагом 2. Каждую инструкцию программы дополнить комментариями. Объяснить полученный результат.

8

Сохранение в массиве чисел от 1 до 13 с шагом 1. Каждую инструкцию программы дополнить комментариями. Объяснить полученный результат.


Отчет должен содержать.

  1. Тему лабораторной работы.

  2. Цель.

  3. Постановку задачи.

  4. Текст программы, в которой каждая инструкция содержит полный комментарий.

  5. Рисунок отладчика.

  6. Вывод, в котором дано полное объяснение получения результата и состояния стека после команд.


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

  1. Как объявить массив в программе.

  2. Как обратиться к элементу массива.

  3. Как указать шаг элементов массива.


Общая информация

Номер материала: ДВ-138937

Вам будут интересны эти курсы:

Курс повышения квалификации «Современные информационные технологии и их использование в работе преподавателей. Системы автоматизированного проектирования одежды и организация технологического процесса»
Курс повышения квалификации «Организация работы по формированию медиаграмотности и повышению уровня информационных компетенций всех участников образовательного процесса»
Курс повышения квалификации «Облачные технологии в образовании»
Курс «Оператор персонального компьютера»
Курс «1С: Предприятие 7.7»
Курс «3D Studio MAX»
Курс повышения квалификации «Сетевые и дистанционные (электронные) формы обучения в условиях реализации ФГОС по ТОП-50»
Курс повышения квалификации «Развитие информационно-коммуникационных компетенций учителя в процессе внедрения ФГОС: работа в Московской электронной школе»
Курс повышения квалификации «Использование компьютерных технологий в процессе обучения в условиях реализации ФГОС»
Курс повышения квалификации «Специфика преподавания информатики в начальных классах с учетом ФГОС НОО»
Курс повышения квалификации «Применение MS Word, Excel в финансовых расчетах»
Курс профессиональной переподготовки «Управление в сфере информационных технологий в образовательной организации»
Курс профессиональной переподготовки «Теория и методика обучения информатике в начальной школе»
Курс профессиональной переподготовки «Математика и информатика: теория и методика преподавания в образовательной организации»
Курс повышения квалификации «Специфика преподавания дисциплины «Информационные технологии» в условиях реализации ФГОС СПО по ТОП-50»

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

Опубликуйте минимум 3 материала, чтобы БЕСПЛАТНО получить и скачать данную благодарность

Сертификат о создании сайта

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

Грамота за использование ИКТ в работе педагога

Опубликуйте минимум 10 материалов, чтобы БЕСПЛАТНО получить и скачать данную грамоту

Свидетельство о представлении обобщённого педагогического опыта на Всероссийском уровне

Опубликуйте минимум 15 материалов, чтобы БЕСПЛАТНО получить и скачать данное cвидетельство

Грамота за высокий профессионализм, проявленный в процессе создания и развития собственного учительского сайта в рамках проекта "Инфоурок"

Опубликуйте минимум 20 материалов, чтобы БЕСПЛАТНО получить и скачать данную грамоту

Грамота за активное участие в работе над повышением качества образования совместно с проектом "Инфоурок"

Опубликуйте минимум 25 материалов, чтобы БЕСПЛАТНО получить и скачать данную грамоту

Почётная грамота за научно-просветительскую и образовательную деятельность в рамках проекта "Инфоурок"

Опубликуйте минимум 40 материалов, чтобы БЕСПЛАТНО получить и скачать данную почётную грамоту

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