- •Команды (директивы) управления программой «Монитор»
- •Директивы работы с памятью
- •Директивы работы с регистрами
- •Способы адресации
- •Выполнение на ассемблере последовательных алгоритмов с различными способами адресации при выполнении арифметических операций
- •Реализация ветвящихся процессов. Команды условных переходов
- •Команды для переходов учебного компьютера
- •Синтаксис команд безусловного перехода
- •Реализация на ассемблере циклических программ
- •Анализ и синтез комбинационных схем
- •Понятие основных (базовых) и базисных функций двух переменных
- •Построение одноразрядного полного сумматора
- •Формальный синтез полного одноразрядного сумматора на основе булевой алгебры
- •Разорванные группы
- •Формы представления чисел
- •Примеры представления чисел с фиксированной точкой в формате sfix()
- •Достоинства и недостатки представления чисел с фиксированной точкой
- •Представление данных в форме с плавающей точкой
- •Видоизменённая (современная) форма представления чисел с плавающей точкой
- •Особенности микроконтроллеров семейства avr atmel
- •Адресное пространство мк avr (распределение памяти)
- •Регистр состояния, регистр флагов.
- •Системы команд процессоров atmel
Выполнение на ассемблере последовательных алгоритмов с различными способами адресации при выполнении арифметических операций
Пример 1. Вычислить значение суммы 2-х чисел а и b. Число а вводится с устройства ввода, число b находится в ячейке памяти с адресом 20. Результат вывести в устройство вывода.
Порядок выполнения задачи:
знакомство с условием задачи
выбор математических методов
разработка алгоритмов решения задач (в графическом виде – схема алгоритма)
наличие программы на алгоритмическом языке
трансляция программы в машинные коды
отладка
анализ полученных результатов и оценка погрешностей
Схема алгоритма
При программировании на ассемблере необходимо выполнить подэтап «распределение памяти»
Распределение памяти
Мы имеем всего 100 ячеек памяти.
<00>÷<19> - область программы
<20> -> b
A -> РВВ
Inp 0 00; АК:=РВВ; АК:=А;
Add 0 20; АК:=АК+b
Out 0 0 0; РВЫВ:=АК
Stop 0 0 0;
Текст программы в машинных кодах
00 01000
01 03020
02 02000
03 12000
04
Последовательность микрокоманд для 00 01000:
РА:=СЧАК
РС:=ЧТ[РА]
РК:=РС
АК:=РВ
СЧАК:=СЧАК +1
Последовательность микрокоманд для 01 03020:
РА:=СЧАК
РС:=ЧТ[РА]
РК:=РС
РА:=А
РС:=ЧТ[РА]
РО:=РС
ПУСК АУ
СЧАК:=СЧАК+1
Пример 2. Сложить два числа. Число а в регистре ввода. Число b константа. Результат в РВЫВ. Непосредственный способ адресации.
Схема алгоритма не меняется (см. пример 1)
Inp 0 00; АК:=РВЫВ; АК:=А;
Add 1 20; АК:=АК+b
Out 0 0 0; РВЫВ:=АК
Stop 0 0 0;
00 01000
01 03120
02 02000
03 12000
04
В 00 01000 последовательность микрокоманд та же.
Последовательность микрокоманд для 01 03120:
РА:=СЧАК
РС:=ЧТ[РА]
РК:=РС
РО:=[А]
ПУСК АУ
СЧАК:=СЧАК +1
Пример 3. Выполнить перемножение двух чисел a и b. А – в регистре ввода, b находится в ячейке 20, а адрес числа b находится в 21 ячейке.
В схеме алгоритма изменится операция.
Inp 0 00; АК:=РВВ; АК:=А;
Mul 2 21; АК:=АК*[[21]]
Out 0 0 0; РВЫВ:=АК
Stop 0 0 0;
00 01000
01 05221
02 02000
03 12000
Inp - также
Mul:
РА:=СЧАК
РС:=ЧТ[РА]
РК:=РС
РА:=[А]
РС:=ЧТ[РА]
[А]:=РС
РА:=[А]
РС:=ЧТ[РА]
РО:=РС
ПУСК АУ
СЧАК:=СЧАК+1
Реализация ветвящихся процессов. Команды условных переходов
Рассмотрим 3 структуры:
1)
2)
If
(усл)
then S1; S3
3)
If
(усл)
then S2; S3
Команды для переходов учебного компьютера
В систему команд входят две команды условного перехода (по знаку JM и по нулю JZ). Для выполнения команд устройство управления анализирует состояние флагов регистра условий. В результате выполнения арифметических действий анализируется значение аккумулятора. Переход по минусу JM выполняется при установке флага «знак». JM осуществляет переход на метку М1, в противном случае выполняется действие S1.
Синтаксис команд безусловного перехода
JM M1
JZ M2
Адрес перехода будет храниться в СЧАК.
Для М1: флаг=1, СЧАК:=[A]; флаг=0, СЧАК:=СЧАК+1.
Пример 1.
Заданы 3 числа a, b, c.
MAX:=A
<00> ÷ <19>
<20> -> MAX
<21> -> A
<22> -> B
<23> -> C
3: MOV 0 21; AK:=A
MOV1 0 20; [20]:=A
4: MOV 0 22; AK:=B
SUB 0 20; AK:=AK – MAX
JM 0 M1;
5: MOV 0 22;
MOV1 0 20;
6: M1: MOV 0 23;
SUB 0 20;
JM 0 M2;
7: MOV 0 23;
MOV1 0 20;
8: M2: MOV 0 20;
Out;
Stop
Программа в машинных кодах
3: 00 07021
01 08020
4: 02 07022
03 04020
04 10007 М1
5: 05 07022
06 08020
6: М1: 07023
08 04020
09 10012; M2
7: 10 07023
11 08020
8: М2: 12 07020
13 02000
14 12000
Последовательность микрокоманд для команд 04
Для случая A>B и A>C
РА:=СЧАК
РС:=Чт[РА]
РК:=РС
СЧАК:=[A]