Задача: Вычислить значение выражения (25 + 13) × (18 – 9), результаты промежуточных вычислений хранить в регистрах. Выделить младшую тетраду результата и поместить её в старшую. Проверить корректность выполнения алгоритма и результаты промежуточных вычислений в симуляторе. Указать результат выполнения алгоритма.
Алгоритм решения задачи представлен на рисунке 18.18.
Листинг тренировочной программы:
.include "P33FJ32MC204.inc" | |||||
.global __reset | |||||
__reset: | ;Метка начала исходного файла | ||||
MOV | #25, W0 | ;W0 = 25 | |||
MOV | #13, W1 | ;W1 = 13 | |||
ADD | W0, W1, W2 | ;W2 = W0 + W1 | |||
MOV | #18, W3 | ;W3 = 18 | |||
MOV | #9, W4 | ;W4 = 9 | |||
SUB | W3, W4, W5 | ;W5 = W3 – W4 | |||
MUL.SS | W2, W5, W6 | ;W6 = W2 × W5 | |||
AND | #0x000F, W6 | ;W6 = W6 ˄ #0x000F, выделение;младшей тетрады | |||
SL | W6, #12, W6 | ;W6 = W6 << 12, сдвиг влево на;12 разрядов | |||
| .end | ;Конец исходного файла |
Рисунок 18.18 – Схема алгоритма к тренировочному заданию
ЛАБОРАТОРНАЯ РАБОТА №19