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

UptoLike

Рубрика: 

25
Примерные варианты контрольных задач:
1. Обменять значения в переменных языка Паскаль x : integer и y : ^integer.
2. Обменять значения в переменных языка Паскаль x[4] и y^[3]; при
выборке значения из массива y^ используйте команду XLAT.
3. Обменять значения в переменных языка Паскаль x[4] и y^[3]. Исполь-
зуйте команды PUSH и POP для временного хранения значений эле-
ментов массива.
4. Определите, сколько байт требуется на запись в оперативной памяти
команды LEA EBX,M, и какие числа записаны в этих байтах.
5. Используя команды пересылок, покажите, как работает команда CMC.
6. Содержимое регистра флагов поместите в переменную x : integer.
7. Обменять значения в переменных языка Паскаль x : integer и y : ^integer.
Обязательно использовать команду XCHG.
4.2. Изучение арифметических команд
При выполнении задания необходимо обратить внимание на формат
получаемого результата, как изменяются флаги при выполнении арифмети-
ческих команд в зависимости от исходных данных. Рассмотреть отличия
команд INC и DEC от команд сложения ADD и вычитания SUB (состояние
флага C). Используя окно дизассемблера, посмотреть, во что транслируются
арифметические операции языка Паскаль.
А также выполнить следующие требования к отчету:
1. Все арифметические команды должны содержать исходные данные ря-
дом с командой.
2. Команды умножения и деления покажите над десятичными числами.
3. Команды сложения и вычитания покажите с такими исходными дан-
ными, чтобы изменялись флаги переполнения и переноса (на каждую
команду два примера на изменение этих флагов по отдельности), дайте
в отчете комментарий, поясняющий результат.
4. Результат выполнения команды должен присутствовать в виде коммен-
тария.
5. Отличия команд INC и DEC от команд ADD и SUB продемонстрируйте
на отдельных примерах.
Отличия назначения и использования флагов переполнения и переноса
можно рассмотреть на следующем примере:
begin
ASM
MOV AL, 01111111B // число со знаком
ADD AL, 00000001B // переполнение 7 разрядов
MOV AL, 11111111B // число без знака
ADD AL, 00000001B // перенос во флаг C
END;
end.