Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВМСС_лабораторные.doc
Скачиваний:
80
Добавлен:
07.06.2015
Размер:
4.19 Mб
Скачать
    1. 7.2 Инструкции сдвига

Рассмотрим пример программы:

Задание: Разработать программу, формирующую новую строку их заданной строки. Каждый символ из заданной строки в новой строке удваивается.

.include "p33FJ256GP710.inc"

.equ msg_out, 0x800 ;начальный адрес новой строки

.text

msg_in: .ascii "Миру - мир!"

.global __reset

__reset:

mov #tblpage(msg_in), W0

mov W0, PSVPAG

mov #tbloffset(msg_in), W6

mov #msg_out, W7

do #5, end

tblrdl.b [W6++], W2

tblrdl.b [W6++], W3

sl W2, #8, W4

ior W4, W2, W4

mov W4, [W7++]

sl W3, #8, W4

ior W4, W3, W4

mov W4, [W7++]

end: nop

nop

.end

Строка msg_inрасполагается в памяти программ. Для того чтобы ее прочитать/записать, необходимо воспользоваться специальными командами:TBLRDL,TBLRDH,TBLWTL,TBLWTH– первые из них предназначены для чтения младшего слова и старшего слова, две последние для записи соответственно. Для корректной работы данных инструкций сначала необходимо записать старшую часть адреса в регистрPSVPAG, и младшую часть адреса строки в любой рабочий регистр (как показано в примере). Для чтения/записи слова (16 бит) используют синтаксис <TBLRDL>, для чтения/записи байта (8 бит) используют синтаксис <TBLRDL.B>. Команды в примере:SL,IOR,MOV– выполняют требуемое задание, т.е. удваивают символ и записывают в новую строку.

          1. Программа работы и последовательность выполнения

  1. Создайте новый проект. Процессор – dsPIC33FJ256GP710.

  2. Подключите необходимые библиотеки.

  3. Подключите отладчик (симулятор), встроенный в среду MPLABIDE.

  4. Разработать программу, выполняющую преобразование введённой строки по алгоритму указанному в таблице в соответствии с номером варианта

  5. Открыть окно Watchи внести в него все регистры, которые используются в коде. В пошаговом режиме отладить код, контролируя изменение регистров в окнеWatch. После отладки программы, показать код и результаты работы программы преподавателю.

  6. Создать блок схему программы.

  7. Подготовить отчет.

№ Варианта

Задание

1

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

2

Все символы «пробел» удаляются из исходной строки, остальные символы – копируются.

3

Первый символ копируется четыре раза, второй – три раза, третий – два раза, четвёртый – один раз, пятый – четыре раза, шестой – три раза, седьмой – два раза и т.д.

4

Все символы с нечётными индексами копируются три раза, остальные – копируются один раз.

5

Все символы цифр от нуля до девяти утраиваются, остальные – копируются один раз.

6

Каждый третий символ строки удваивается, остальные – копируются один раз.

7

Все символы цифр от трех до восьми копируются два раза, остальные – копируются один раз.

8

Все символы с чётными индексами удаляются из строки, остальные – копируются один раз.

9

Все символы цифр от нуля до девяти удаляются из строки, остальные – копируются один раз.

10

Все прописные буквы латинского алфавита заменяются строчными буквами. Остальные символы копируются.

11

Каждый четвёртый символ строки копируется четыре раза, остальные – копируются один раз.

12

Все символы заглавных букв латинского алфавита утраиваются.

13

Все символы с нечётными индексами удваиваются, остальные копируются.

14

Все прописные буквы латинского алфавита удваиваются, остальные символы копируются.

15

Все символы цифр от нуля до девяти удваиваются, остальные копируются.