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

Команды работы с подпрограммами.

Исследуем работу команд JSR,BSRèRTSна следующих примерах:

1. Рассмотрим пример построения цикла с декрементом:

0100 LDA #$03заносится в аккумулятор количество повторений

0102 TAX в индекс. регистр помещается$03

0103 JSR $0106,Xвызов подпрограммы, в которой

декрементируется счетчик (заметьте, что здесь применена индексная адресация)

0106 BNE $0103если счетчик не обнулился, то переход на следующую итерацию

0108 NOPздесь будет стоять точка останова

0109 DECAуменьшение счетчика

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

Установите точку останова по адресу $0108. Протрассируйте программу. Заметьте, что подпрограмма по адресу$0109выполнится три раза. Проверьте, что число, хранящееся в стеке по адресамSP,SP-1, соответствует числу$0501(т.е. адресу возврата из подпрограммы) с измененным порядком следования старшего и младшего байтов и не меняется после выполнения программы, т.е. команда возврата из подпрограммы не изменяет содержимого стека. При этом, если вы находитесь в подпрограмме, то данное число находится над указателем стека (SP+2,SP+1).

2. Рассмотрим пример построения цикла с инкрементом:

0100 LDA #$FD заносится в аккумулятор

минус 3, т.е. количество повторений с обратным знаком

0102 BSR $0107вызов подпрограммы, в которой

инкрементируется счетчик

0104 BNE $0102если счетчик отличен от нуля, то необходимо повторить цикл

0106 NOPздесь будет стоять точка останова

0107 INCAувеличение счетчика

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

Проведите действия, аналогичные п.1, за исключением того, что точку останова надо поставить по адресу $0106. Убедитесь, что программа аналогична вышеприведенной, но число под стеком равно$0401.

Команда установки указателя стека в исходное состояние.

Рассмотрим работу команды RSPна следующем примере:

0100 JSR $0103уменьшение стека на$0002

0103 RSP загрузка в регистрSPзначения$FF

Протрассируйте программу. Убедитесь в том, что команда RSPзаносит в регистрSPзначение $FF. Заметьте, что в отличие от команд группыLDкомандаRSPне изменяет регистр признаков.

Исследуем программу, использующую изученные выше команды и осуществляющую поиск значения $02в памяти с адреса$0001по адрес$00FF(адрес, по которому расположено искомое значение, после выполнения находится в регистреX; если искомое значение не найдено, то в регистреXнаходится$00):

0100 LDX #$01начальный адрес

0102 LDA ,Xвыборка байта из памяти

0103 CMP #$02сравнивается со значением$02

0105 BEQ $010Aåñëè$02, то выход из программы

0107 INCXиначе увеличениеÕ

0108 BNE $0102и переход на следующую итерацию

010A NOPместо для установки точки останова

Команда CMP производит вычитание аргумента из аккумулятора, устанавливая флаги в соответствии с полученным результатом. При этом результат не сохраняется.

Установите точку останова по адресу $010A. Поэкспериментируйте с программой, присваивая ячейкам памяти$0001-$00FFразличные значения.

2.3. Контрольные вопросы.

1. В чем заключается отличие команд BRA и JMP?

2. В чем состоит отличие команд BSR и JSR?

3. В чем заключается сходство команд LDA и TXA?

4. В чем состоит отличие команд BRSET и BRCLR?

5. Сколько байт в памяти занимает команда BRN?

6. В чем заключается преимущество команды BRN перед двумя командами NOP?

7. Какие команды перехода влияют на флаги?

8. Какие ошибки допущены при написании фрагмента программы:

. . .

020E BRA $0100

020F BRCLR #8,*$22,$0189

. . .

9. Какая команда проверяет флаг Z на равенство "0"?

10. Какие команды из изученных в данной лабораторной работе взаимодействуют с флагом Z?

11. Какие ошибки допущены при написании фрагмента программы:

. . .

0100 TAX

0101 LDA $00,X

0102 RSPA

0103 BRS $F0,X

. . .

12. Какие режимы адресации используют команды BRN, LDX, RSP? Каковы пределы адресации для различных режимов адресации?

13. Какие действия выполняет команда RTS?

14. Какие действия выполняет команда BSR?

15. В чем состоит преимущество команды JMP перед командой BRA?

16. Можно ли командой перехода изменить флаг Z?

17. Какие действия выполняет команда TXA?

18. В чем заключается отличие команд BCS и BLO?

19. Существует ли разница между командами ВНСС и BCC?

20. Каково значение стека, если Вы находитесь в подпрограмме?

21. Можно ли командами BHI и BHS смоделировать (приблизительно) работу команды BNE? Если нельзя, то почему, а если можно, то как?

22. Можно ли командами STX и LDA смоделировать работу команды TAX (приблизительно)? Обоснуйте ответ.

23. Какие из приведенных команд взаимодействуют с флагом C: BLO, BRCLR, BLS, BRA, BSR, BHCS, TAX?

24. В чем состоит сходство команд BCS и LDA в формате непосредственной адресации?

25. Какие типы адресации могут использовать команды JMP, BRSET, BNE, LDA, TXA, RSP, LDX?

Соседние файлы в предмете Отладка микроконтроллеров ЭВМ