Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ_к_контрольной-АСС-Р.doc
Скачиваний:
6
Добавлен:
06.02.2016
Размер:
340.48 Кб
Скачать

Задание 2. Массивы.

Массивы описываются по директивам определения данных с использованием конструкции повторения DUP.

Например:

X OB 30 DUP (?) ; массив из 30 элементов

A DW N DUP (M DUP (?)) ; массив N-строк, M-столбцов.

Обращение к элементам идет с помощью указания адреса. Для осуществления таких возможностей в ассемблере введена «модификацияадресов».

При модификации адреса вместе с адресом может быть указан в квадратных скобках некоторый регистр,

Например:

MOV CX, A[BX].

Тогда команда будет работать не с указанным в ней адресом А, а с исполнительным адресом Аисп, который вычисляется по формуле: Aисп=(A+[BX]) mod 216, где [BX] означает содержимое регистра ВХ. Другими словами, прежде чем выполнить команду, центральный процессор прибавит к адресу А, указанному в команде, текущее содержимое регистра ВХ, получит некоторый новый адрес и именно из этой ячейки с этим адресом возьмёт второй операнд. Если в результате сложения получилось слишком большая цифра, то от нее берется только последние 16 бит.

Замена адреса из команды на исполнительный адрес называется модификацией адреса, а регистр, участвующий в модификации, называютрегистром - модификаторомилимодификатором. В ПК в качестве модификаторов можно использовать только регистры: ВХ, ВР, SI, DI.

Исходя из выше изложенного, вычислим сумму N элементов массива.

Программа будет иметь вид:

MASM

MODEL small

STACK 256

.data

X DW 5, 9, 12, 8, 7

.code

.startup

jmp main

include io.inc

main:

MOVAX, 0 ; начальное значение суммы

MOVCX, 5

MOV SI, 0

M1: ADD AX, X[SI]

ADD SI, 2

LOOP M1

MOV DH, 0

MOV DL, 3

CALL PROCOUTNUM

.exit

end

  1. Вопросы к зачету по дисциплине

  1. Перечислите регистры общего назначения.

  2. Какие регистры относятся к сегментным регистрам?

  3. Назначение регистра флагов.

  4. Перечислите флаги состояния.

  5. Что такое операнды?

  6. Как работает команда сложения?

  7. Как реализуется условный переход?

  8. С помощью какой команды реализуются циклы в ассемблере?

  9. Какие команды включает в себя команда LOOP?

  10. Какой регистр используется в качестве счетчика цикла?

  11. Как описать массив в ассемблере?

  12. Как осуществляется доступ к элементам массива?

  13. Как осуществляется индексация элементов массива?

  14. Что такое «модификация адресов»?

  15. Как осуществлять модификацию адреса по двум регистрам?

  16. Перечислите правила модификации адреса?

  1. Литература

Основная:

  1. Пильщиков В.Н. Assembler. Программирование на языке ассемблерIBMPC-М: Диалог-Мифи.-2003

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

  3. Абель П. Язык Assemblerа для IBMPCи программирования: Пер. с англ.-М.: Высшая школа, 1992.-477 с.

  4. Нортон П., Сохуэ Д. Язык Assemblerа для IBMPC: Пер. с англ.-М.: Финансы и статистика, 1992.-352 с.

  5. Скенлон Л. Персональные ЭВМ IBMPCиXT. Программирование на языке Assemblerа: Пер. с англ.-М.: Радио и связь, 1991. 336 с.

Дополнительная:

  1. Электронные вычислительные машины в 8-ми книгах. Уч. пособие для Вузов/под ред. Савельева А.Я.

  2. Брябрин В.М. Программное обеспечение персональных ЭВМ. – М.: «Наука» -1998.

10