Архитектура микропроцессоровРефераты >> Программирование и компьютеры >> Архитектура микропроцессоров
Выполнить можно также только одну команду. При нажатии клавиши 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 Возврат |