Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
22
Добавлен:
16.04.2013
Размер:
117.65 Кб
Скачать

Подпрограмма вывода списка слов на терминал output bsr ent Перевести строку

MOVEA.L #NAME,A0 Адрес начала строки в регистр А0

MOVEQ #4,D5 Счетчик количества слов в списке

OUT2 MOVE.B (A0)+,D0 Запись символа в регистр D0

BEQ OUT3 Если он равен нулю, то перейти к метке

OUT3

L BTST.B #2,$FF0003

BEQ L

MOVE.B D0,$FF0007 Вывод символа на экран

BRA OUT2 Вывести следующий символ

OUT3 BSR ENT Перевести строку

DBF D5,OUT2 Вывести следующее слово

OUT4 RTS Возврат из подпрограммы

Подпрограмма перевода строки

ENT BTST #2,$FF0003

BEQ ENT

MOVE.B #13,$FF0007 Передать терминалу код возврата

коретки

E BTST #2,$FF0003

BEQ E

MOVE.B #10,$FF0007 Передать терминалу код перевода

строки

RTS Возврат из подпрограммы

NAME DC.B 'MICHAEL'

DC.B 00

DC.B 'FATHER'

DC.B 2000

DC.B 'OLEG

DC.B 20202000

DC.B 'MAX

DC.B 2020202000

DC.B 'GENA

DC.B 20202000

END

Запустите программу с адреса $1000. На терминал будут выведенны два списка сначало исходный, неупорядоченный, а затем отсортированный.

Восстановите исходный список по адресу $10BE (метка NAME).

Устаноите точку останова по метке OUT4. Выполните первые две команды в пошаговом режиме. Первая команда устанавливает указатель стека по адресу $4000, а вторая вызывает подпрограмму, сохраняя текущее значение счетчика команд в стеке и уменьшая содержимое указателя на четыре. Командой MD 3FFC просмотрите содержимое стека, он должен содержать адрес, по которому произойдет возврат в основную программу. Запустите выполнение программы до точки останова. Выполните команду RTS командой TR -содержимое РС будет восстановленно из стека, а указатель А7 будет указывать на адрес $4000.

Контрольные вопросы и задания.

Вопросы.

1. Какой флаг проверяют команды:

à. BCS ;

á. BLS ;

â. BHI ;

ã. BPL .

2. Объясните различие между командами BRA и JMP .

3. Найдите ошибку в написании команд:

à. BRA.B 1000;

á. RTS.L D3;

4. Воздействует ли команды DBcc на флаги регистра статуса?

5. Расскажите о принципе работы команды DBcc.

6. Какие биты в регистре состояния тестирует команда BGT ?

7. По какому флагу и как осуществляет передачу управления команда DBF ?

8. В чем отличия команд группы DBcc от Bcc ?

9. Когда необходимо сохранить регистр статуса до вызова подпрограммы или в самой подпрограмме если выход из нее осуществляется командой RTR?

10. С помощью каких команд осуществляется возврат из подпрограмм ?

11. В чем различия вызова подпрограмм командами JSR и BSR?

12. Воздействует ли на флаги ССR команда BSR, если выход из подпрограммы осуществляется с восстановлением регистра статуса?

13. Можно ли с помошью команды BRA, находящейся по адресу $100, перейти к команде записанной в ячейке $90000?

14. Объясните работу команды STOP?

15. Каковы максимальные длины переходов команд BRA.S и BRA.L?

16. Найдите ошибку в написании команд:

DBF.L D1,LOOP

DBF.W D1,LOOP

DBF.S D1,LOOP

17. Какие способы адресации могут быть использованны для задания адреса перехода в команде JMP <EA>?

18. Какие способы адресации могут быть использованны для задания адреса перехода в команде JSR <EA>?

19. Cколько бит отводится для записи длинного смещения в команде BLS.L?

20. Cколько бит отводится для записи короткого смещения в команде BHI.S?

21. Объясните принцип работы команды SCS label?

22. Какие условия перехода используются в знаковой арифметике?

23. Какие условия перехода используются в беззнаковой арифметике?

24. Какие длинны переходов используются в команде DBcc?

25. Какие флаги меняет команда RTS?

Задания.

1. Напишите программу , производящую сравнение операндов Q1,Q2 и Q3. Если Q1+Q2>Q3 , то в регистр D4 поместить Q1 , в противном случае в регистр D4 поместить Q2. Операнды разместить в регистрах D0 , D1 , D2 .

2. Составить программу последовательного вычитания : исходное число поместить в регистр D0 , вычитаемое - в D1 , количество вычитаний - в регистр D2, результат - в регистр D3 .

3. Напишите программу , анализирующую три операнда: Q1 , Q2 , Q3. Если Q3=0 , то проверить условие Q1=Q2. а).В случае его выполнения занести в D0 "0" , иначе 1 .Если Q3=1 , то проверить условие Q1>Q2, далее действовать по пункту а).

4. Разработать программу сравнения двух чисел , с занесением меньшего по адресу , записанному в регистре A0.

5. Преобразуйте программу , написанную на языке высокого уровня , в последовательность команд ассемблера:

A=10;

while (A>2)

{ тело цикла ;

A=A-1;}

6. Напишите программу подсчета положительных и отрицательных чисел, расположенных в N последовательных ячейках ОЗУ. Исходные данные: в регистре A0 - адрес первой ячейки исследуемого массива , в A1 - количество целых чисел.Подсчитанное количество положительных чисел занести в регистр D0.

7. Повторите задание ¹5 для следующей программы:

!!!!!!!лучше сделайте COPY-PASTE!!!!!! см также задание 9

A=15;

do

{ тело цикла;

A=A-1;}

while (A>4);

!!!!! Здесь надо поговорить!!!!

8. Составить программу , реализующую циклическую структуру типа

FOR I=N1 TO N2 DO { тело цикла }.

9. Повторите задание ¹5 для следующей программы:

switch(n) {

case 1: i=1;

break;

case 3: i=2;

break;

case 6: i=3;

break;}

10. Состaвить программу , реализующую циклическую структуру типа

REPEAT {тело цикла } UNTIL < условие его окончания >.

11. Составить программу , реализующую циклическую структуру типа

FOR I=N DOWNTO -1.

Сначала мы рассмотрим команды переходов, сгруппированные в Табл. 1. В таблицу включены также команды установки байта по условию.

Òàáë. 1

Мнемоника Размерность Формат Допустимый Действие Сост. флагов

или постфикс операнда тип EA N Z V C X

JMP áåç ÅÀ Control addr. DST®ÐÑ - - - - -

(Переход) размера modes

BRA .S èëè <label> DST®ÐÑ - - - - -

(Переход) ничего

Bcc .S или <label> Если cc, тогда - - - - -

(Переход ничего DST®PC

по условию)

DBcc без Dn,<label> Если cc/, тогда - - - - -

(Декремент и размера Dn.W-1®Dn.W

переход Если Dn.W¹1, тогда

по условию) DST®PC

Scc байт EA Data Если cc, тогда - - - - -

(Установка alterable FF®EA, в противном

по условию) случае 00®EA

Условия, по которому определяется сс, даны ниже.

Установки флагов для:

Синтаксис Проверяемые условия перехода по Bcc, или окончания в DBcc, или

для перемещения FF в EA в Scc

BEQ, DBEQ, SEQ Равно Z=1

BNE, DBNE, SNE Не равно Z=0

BGT, DBGT, SGT Больше Z+(NÅV)=1

BLT, DBLT, SLT Меньше NÅV=1

BGE, DBGE, SGE Больше или равно NÅV=0

BLE, DBLE, SLE Меньше или равно Z+(NÅV)=0

BVS, DBVS, SVS Переполнение V=1

BVC, DBVC, SVC Нет переполнения V=0

BPL, DBPL, SPL Ïëþñ N=0

BMI, DBMI, SMI Минус N=1

BHI, DBHI, SHI Âûøå C+Z=0

BLS, DBLS, SLS Ниже или равно C+Z=1

BCS, DBCS, SCS Перенос установлен (ниже) C=1

BCC, DBCC, SCC Перенос сброшен (выше или равно) C=0

DBF, SF Ложно (никогда) -

DBT, ST Истинно (всегда) -

Соседние файлы в папке Motorola - Описание лаб