double arrow

Тренировочный пример выполнения работы

Задача: Вычислить значение выражения (25 + 13) * (18 – 9), результаты промежуточных вычислений хранить в регистрах. Выделить младшую тетраду результата и поместить её в старшую. Проверить корректность выполнения алгоритма и результаты промежуточных вычислений в симуляторе. Указать результат выполнения алгоритма.

Алгоритм решения задачи представлен на рисунке 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; Конец исходного файла

Результат выполнения алгоритма – регистр W6 содержит значение 0x6000.

Рисунок 18 – Схема алгоритма к тренировочному заданию


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



Сейчас читают про: