Архитектура ЭВМ. Задания и примеры выполнения лабораторных работ. Докторов А.Е - 23 стр.

UptoLike

Рубрика: 

23
4. ЛАБОРАТОРНЫЕ ЗАДАНИЯ
Лабораторными заданиями предусматривается изучение команд про-
цессора, используя средства встроенного ассемблера и интегрированной сре-
ды Free Pascal. Отдельного задания на команды управления состоянием про-
цессора нет. Они могут быть использованы при изучении других команд.
Отчет по каждому заданию оформляется в виде программы на языке
Паскаль со встроенными блоками на ассемблере. Программа по каждому
заданию должна содержать сведения об авторе, заголовок и краткие коммен-
тарии. Например:
// Лабораторное задание 1
// Изучение команд пересылки данных
// Выполнил студент гр. ИСТд-21 Великий А. А.
Лабораторное задание считается сданным при выполнении двух усло-
вий: первоеналичие правильно оформленного отчета, второевыполнение
небольшой контрольной задачи (правила оформления отчета и примерные
варианты задач приведены в описании каждого из лабораторных заданий).
Задачи должны выполняться на занятиях.
4.1. Изучение команд пересылки данных
Изучение команд пересылки данныходно из наиболее объемных
заданий. Оно предусматривает изучение логики работы каждой из перечис-
ленных ранее команд.
Кроме изучения логики работы команд пересылки данных, при выпол-
нении данного задания надо рассмотреть все режимы адресации на примере
одной из команд. Лучше всего для этих целей подходит команда MOV.
Также надо будет указать результат каждой операции. Направление пере-
сылки можно указать стрелкой. Для каждого из режимов адресации укажи-
те в комментарии, какие регистры можно (или какие регистры нельзя) ис-
пользовать. Например,
var a : integer;
begin
a := 12;
asm
// РЕЖИМЫ АДРЕСАЦИИ
// непосредственный режим адресации, в качестве приемника
// нельзя использовать регистры (укажите регистры)
MOV AX, 23 // источникнепосредственная, приемникрегистровая, (23=>AX)
MOV AX, a // источникпрямая, приемникрегистровая (a => AX = 12)
//косвенно-регистровая адресация (можно использовать регистры…)
LEA EBX, a // адрес переменной a => EBX (EBX = 00409000h)
MOV CX, [EBX] // из ячейки памяти с адресом EBX = 00409000h => CX = 12
end;
end.