Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Микропроцессорная техника.doc
Скачиваний:
37
Добавлен:
01.05.2014
Размер:
3.96 Mб
Скачать

Выполнение на ассемблере последовательных алгоритмов с различными способами адресации при выполнении арифметических операций

Пример 1. Вычислить значение суммы 2-х чисел а и b. Число а вводится с устройства ввода, число b находится в ячейке памяти с адресом 20. Результат вывести в устройство вывода.

Порядок выполнения задачи:

  1. знакомство с условием задачи

  2. выбор математических методов

  3. разработка алгоритмов решения задач (в графическом виде – схема алгоритма)

  4. наличие программы на алгоритмическом языке

  5. трансляция программы в машинные коды

  6. отладка

  7. анализ полученных результатов и оценка погрешностей

Схема алгоритма

При программировании на ассемблере необходимо выполнить подэтап «распределение памяти»

Распределение памяти

Мы имеем всего 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]