- •Министерство образования и науки
- •Содержание
- •Цель и задачи контрольной работы
- •2. Содержание и выбор варианта задания
- •Задания к контрольной работе Задание №1.
- •Задание №2.
- •4. Методические указания к выполнению практических заданий Задание 1. Управление циклом по счетчику.
- •Loop l
- •Задание 2. Массивы.
- •Вопросы к зачету по дисциплине
- •Литература
Задание 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
Вопросы к зачету по дисциплине
Перечислите регистры общего назначения.
Какие регистры относятся к сегментным регистрам?
Назначение регистра флагов.
Перечислите флаги состояния.
Что такое операнды?
Как работает команда сложения?
Как реализуется условный переход?
С помощью какой команды реализуются циклы в ассемблере?
Какие команды включает в себя команда LOOP?
Какой регистр используется в качестве счетчика цикла?
Как описать массив в ассемблере?
Как осуществляется доступ к элементам массива?
Как осуществляется индексация элементов массива?
Что такое «модификация адресов»?
Как осуществлять модификацию адреса по двум регистрам?
Перечислите правила модификации адреса?
Литература
Основная:
Пильщиков В.Н. Assembler. Программирование на языке ассемблерIBMPC-М: Диалог-Мифи.-2003
Юров В., Хорошенко С. Assembler: учебный курс.-СПб: Питер Ком, 1999.-672 с.:ил.
Абель П. Язык Assemblerа для IBMPCи программирования: Пер. с англ.-М.: Высшая школа, 1992.-477 с.
Нортон П., Сохуэ Д. Язык Assemblerа для IBMPC: Пер. с англ.-М.: Финансы и статистика, 1992.-352 с.
Скенлон Л. Персональные ЭВМ IBMPCиXT. Программирование на языке Assemblerа: Пер. с англ.-М.: Радио и связь, 1991. 336 с.
Дополнительная:
Электронные вычислительные машины в 8-ми книгах. Уч. пособие для Вузов/под ред. Савельева А.Я.
Брябрин В.М. Программное обеспечение персональных ЭВМ. – М.: «Наука» -1998.