Архитектура микропроцессоров
Рефераты >> Программирование и компьютеры >> Архитектура микропроцессоров

Выполнить можно также только одну команду. При нажатии клавиши F8 исполняется команда, находящаяся по адресу указанному в R7, при этом значение счетчика команд увеличивается на 2.

При исполнении вашей программы могут возникнуть следующие ошибки:

Неверное значение счетчика команд – значение регистра R7 не попадает в диапазон 1000…2024.

Пустая строка, не могу выполнить – нет команды в ячейке, адрес которой указан в R7, либо нет команды Стоп в конце программы.

Неверный адрес – адрес, указанный в регистре, при использовании косвенной адресации не попадает в диапазон 1000…2024.

Данные заносятся в адрес, отведенный под программу – при использовании косвенной адресации данные заносятся в память по адресу, который используется программой.

Данные не должны содержать букв – в памяти хранятся данные, которые содержат посторонние символы (не цифры).

Переполнение диапазона чисел – число, хранимое в памяти очень большое.

Неверный адрес перехода – значение адреса перехода не принадлежит диапазону 1000…2024.

Неверные символы в команде перехода – адрес перехода в команде перехода содержит посторонние символы (не цифры).

Нет адреса подпрограммы – команда Вызов подпрограммы по адресу не содержит адреса начала подпрограммы.

Неверный адрес подпрограммы – адрес начала подпрограммы не принадлежит диапазону 1000…2024, либо адрес подпрограммы содержит посторонние символы (не цифры).

Неверный адрес возврата – адрес возврата не принадлежит диапазону 1000…2024.

При исполнении могут возникнуть и другие ошибки, которые мне не удалось предусмотреть.

Особое внимание следует уделить исполнению программы с подпрограммой (см. пример программы с подпрограммой). При исполнении команд обращения к подпрограмме и возврата из подпрограммы происходит обращение к стеку, адрес начала которого хранится в регистре R6. Принцип работы стека изложен в первой части курсовой, в разделе способы адресации.

Примеры программ

1. Простая программа, использующая регистровую адресацию.

Найти сумму всех чисел от А до В.

Число А хранится в R0, число В в R1, сумма в R3. Пусть А=1, В=5.

Регистры

Редактор

R0 = +00001

1000 Переслать R0 в R2

R1 = +00005

1002 Сравнить R2 c R1

R2 = +00000

1004 Переход на 3 слов

R3 = +00000

1006 Добавить R2 к R3

R7 = +01000

1008 Увеличить на 1 R2

 

1010 Переход на -5 слов

 

1012 Стоп

В данной программе не используются регистры R4, R5, R6.

2. Программа, использующая косвенную адресацию.

Найти сумму всех чисел от А до В.

Число А хранится в ячейке 1016, число В в ячейке 1018, результат в ячейке 1020. Регистр R0 хранит адрес первого числа, R1 – второго числа, R3 – результата.

Регистры

Редактор

Память

R0 = +01016

1000 Переслать (R0) в R2

1016 1

R1 = +01018

1002 Сравнить R2 c (R1)

1018 5

R2 = +00000

1004 Переход на 3 слов

1020 0

R3 = +01020

1006 Добавить R2 к (R3)

 

R7 = +01000

1008 Увеличить на 1 R2

 
 

1010 Переход на -5 слов

 
 

1012 Стоп

 

3. Программа работы с массивом данных.

Посчитать число положительных элементов массива и занести его в R5.

В R0 хранится адрес начала массива 1030. В R1 – адрес конца массива 1036.

Регистры

Редактор

Память

R0 = +01016

1000 Сравнить (R0)+ c R3

1030 -1

R1 = +01018

1002 Если < переход на 1 слов

1032 2

R5 = +00000

1004 Увеличить на 1 R5

1034 3

R7 = +01000

1006 Сравнить R0 с R1

1036 -4

 

1008 Если <= переход на -5 слов

 
 

1010 Cтоп

 

4. Программа с подпрограммой.

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

Адрес начала первого массива 1050 хранится в R0. Адрес конца первого массива 1060 в R1. Адрес начала второго массива 1070 в R2. Адрес конца второго массива 1080 в R3. Начало стека 1200 в R6.

Регистры

Редактор

Память

R0 = +01050

1000 Вызов подпрограммы

1050 1

R1 = +01060

1002 по адресу 1022

1052 2

R2 = +01070

1004 Переслать R2 в R0

1054 3

R3 = +01080

1006 Переслать R3 в R1

1056 -2

R6 = +01200

1008 Переслать R4 в R2

1058 4

R7 = +01000

1010 Переслать R5 в R3

1060 1

 

1012 Вызов подпрограммы

 

1014 по адресу 1022

1070 -2

 

1016 Переслать R2 в (R5)

1072 5

 

1018 Переслать R4 в (R3)

1074 6

 

1020 Стоп

1076 -3

 

1022 Очистить R4

1078 7

 

1024 Переслать R0 в R5

1080 -7

 

1026 Переслать (R0)+ в R4

 
 

1028 Сравнить (R0) с R4

 
 

1030 Если < переход на 2 слов

 
 

1032 Переслать R0 в R5

 
 

1034 Переслать (R0) в R4

 
 

1036 Увеличить на 1 R0

 
 

1038 Увеличить на 1 R0

 
 

1040 Сравнить R0 с R1

 
 

1042 Если <= переход на -8 слов

 
 

1044 Возврат

 


Страница: