
- •ИЗучение системы программирования микроконтроллеров dsPic33f с помощью языка программирования ассемблер
- •1 Цель работы
- •2 Подготовка к выполнению работы
- •3 Вопросы для самоконтроля
- •4 Приборы, оборудование и документация
- •5 Порядок выполнения работы
- •8. 1. 2 Общий формат инструкций и директив
- •8. 1. 3 Директивы Ассемблера
- •8.1.4 Числовые константы и системы счисления
- •8.1.5 Текстовые строки
- •8.2 Тренировочный пример выполнения работы
8.1.4 Числовые константы и системы счисления
MPASM поддерживает шестнадцатеричную, десятичную и двоичную системы счисления. Для обозначения числового значения используется символ «#».
Синтаксические правила числовых значений приведены в таблице 1.
Таблица 1 – Синтаксис числовых значений
Тип |
Синтаксис |
Пример |
Шестнадцатеричный |
0x< числовое значение > |
#0x9F |
Десятичный |
<числовое значение> |
#123 |
Двоичный |
0b<числовое значение> |
#0b11 |
8.1.5 Текстовые строки
Текстовые строки могут состоять из знаков ASCII. Определение строки завершается специальным символом окончания строки – «\n».
8.2 Тренировочный пример выполнения работы
Задача: Вычислить значение выражения (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 – Схема алгоритма к тренировочному заданию