[257]Лабораторные_МС_68HC11 (1086954), страница 3
Текст из файла (страница 3)
В результате выполнениякоманды TAB значение аккумулятора A будет присвоено акку- - - - ? ? 0 мулятору B, команда TBA имеет прямо противоположный эффект. Следует отметить, что регистр статуса принимает состояTPA, TSX, TSY, TXS,ние, подобное выполнению команд STAA, STAB.TYS, XGDX, XGDYКоманда TPA осуществляет перенос содержимого регистраCCR в аккумулятор A. Это удобно, если после выполнеS X H I N Z V Cния какой-либо подпрограммы необходимо сохранить состоя- - - - - - - ние регистра статуса (см.
также TAP).Группа команд работы с регистром стека имеет одну особенность: при переносе числаиз индексного регистра регистр стека получает на единицу меньшее значение, при обратнойпересылке происходит увеличение индексного регистра. Рассмотрим эти команды подробнее:cpu6811org$c800; начальный адрес программыldx#$220; занести в регистр X адрес,; следующий за границами внутреннего; ОЗУ, плюс некоторое смещение ($20)xgdx; обмен содержимого регистров X и Dclrb; очистить младший байт регистра Dxgdx; X = $200txs; SP = $1fftsy; Y = $200Обмен содержимого индексного регистра и регистра D, как правило, используется приарифметических операциях (так как арифметические команды работы с регистром D болееразвиты) или в случае необходимости 8-разрядного доступа к содержимому индексного регистра, что может быть полезно, например, для организации кольцевого буфера.Команда TAP осуществляет перенос значения регистра ATAPв соответствующие биты регистра статуса CCR.
При этом содержимое регистра A остается неизменным. Флаг X, служащийS X H I N Z V C*для маскирования прерывания XIRQ, в результате выполнения? ? ? ? ? ? ? ?*- значение может быть измеэтой команды может быть сброшен, но он не может быть устанено только из 1 в 0.новлен, если до выполнения команды флаг был сброшен.cpu6811org$c800; начальный адрес программыldaa #$47; занести в регистр А новое; содержимое регистра статусаtap; установить новое значение регистра; статуса: заметьте, что флаг X; не будет установленМетоды адресации.
Команды пересылки даных.10Лабораторная работа №2Команды работы со стеком как правило используются вPSHA, PSHB, PSHX,подпрограммах для того, чтобы сохранить значение одного илиPSHY, PULA, PULB,более регистров. Алгоритм работы команд PSH таков:PULX, PULY1. в ячейку памяти, на которую указывает регистр SP записывается (младший) байт регистра-операнда;S X H I N Z V C2.
значение регистра SP уменьшается на 1, указывая на сле- - - - - - - дующую свободную ячейку в области стека;3. в случае двухбайтного операнда последовательность (1-2)повторяется со старшим байтом операнда.Команды группы PUL выполняют данную последовательность в обратном порядке, увеличивая значение регистра SP.Загрузите и выполните в пошаговом режиме следующую программу, демонстрирующуюкаким образом можно сохранить неизменными все внутренние регистры ОЭВМ(рекомендуется так же обратить внимание на содержимое стека):cpu6811org$c800psha; последовательно сохраняем регистрыpshb; в стеке: A, B, X, Y, CCRpshxpshytpapshaldaa #$20; выполняем какие-либо действия,ldx$12; в результате которых изменяетсяldy$1f03; содержимое регистровclrbxgdypula; восстанавливаем регистры: CCR, Y,tap; X, B, ApulypulxpulbpulaСледует отметить, что из-за особенностей эмуляции при выполнении программы в пошаговом режиме содержимое ячеек памяти, расположенных ниже указателя, не сохраняется.Методы адресации.
Команды пересылки даных.11Лабораторная работа №24. Контрольные вопросы1. Какие методы адресации Вам известны? Дайте краткую характеристику каждого из них.2. Какие методы адресации могут быть использованы в командах LDAA, STAA?3. На какие флаги влияет выполнение команды TSTA?4.
Как формируется абсолютный адрес перехода в командах, использующих индексную адресацию?5. Укажите на неточности (если они есть) в написании команд:ldaa #20staa #$50ldab #$500taxxgdy6. Какие из изученных в данной лабораторной работе команд влияют на содержимое регистра SP?7. Что такое позиционно-независимая программа?8. Какие методы адресации используют приведенные ниже команды?ldaa #20staa $20pshacomapulb9. Каково значение регистров X и D в результате выполнения программы:ldaa #30ldx#$4020tabpshapshaxgdxpulx10.Какие особенности имеет команда TAP?11.Какое применение находит команда XGDX?12.Каково значение регистра SP в результате выполнения фрагмента программы:ldx#$200txspshxpula13.Как формируется абсолютный адрес перехода в командах, использующих относительнуюадресацию?14.Какая логическая ошибка допущена при написании данного фрагмента программы:ldx#$20pulaldaa 0,xstaa 5,xldaa 3,xstaa $22psha15.Каково значение регистра Y в результате выполнения программы:ldx#$4644stx$20ldaa #$20tabМетоды адресации.
Команды пересылки даных.12Лабораторная работа №2stdldy$21$205. Задания1. Напишите программу, заполняющую ячейки $C900Þ$C905 значением $55, используя индексную адресацию.2. Перезаписать регистр A в регистр B таким образом, чтобы значение регистра флагов неизменилось.3. Занести $AA и $55 в регистры A и B, соответственно.
Перенести значение этих регистров врегистр X таким образом, чтобы в регистре X оказалось значение $55AA.4. Заполнить 10 ячеек стека значением ячеек памяти, начиная с $C800.5. Произвести обмен регистров X и Y тремя различными способами.6. Занести в регистр X число $1F0.
Используя только рассмотренные в этой лабораторнойработе команды уменьшить это число на 3, не используя непосредственную адресацию. 17. Произвести обмен содержимого младшего байта регистра X с регистром A.8. Изменить порядок следования байт в регистре X, не используя команду XGDX.9. Занести значение регистра стека в регистр D.10.Изменить порядок следования байт в регистре Y, используя только неявную адресацию.11.Сохранить текущее значение регистра стека в стеке.12.Установить регистр флагов в соответствие с содержимым младшего байта регистра SP.13.Переписать содержимое регистра A в регистры B, X и Y.14.Сохранить все регистры ОЭВМ в ячейках памяти $0000Þ$0008.
При этом содержимоеданных ячеек памяти должно соответствовать значению регистров при входе в программу.1-задание повышенной сложностиМетоды адресации. Команды пересылки даных.13Лабораторная работа №3Лабораторная работа №3Арифметические команды.1. ВведениеПриведенные в данном разделе эксперименты предназначены для изучения работыарифметических команд: сложения, вычитания, умножения, деления и десятичной коррекции.2. Арифметические командыСписок арифметических команд приведен в таблице 3.1.
Приведем примеры использоINCAINCBINC**INXINYINSDECADECBDEC**DEXDEYDESNEGANEGBNEG***CMPACMPB*CPD*CPX*CPY*CBAТаблица 3.1. Арифметические команды.SUBA*ADDA*ADCA*DAASUBB*ADDB*ADCB*MULSUBD*ADDD*FDIVSBCA*ABAIDIV*SBCBABXSBAABYПримечания:*- Команды, использующие непосредственную, прямую, расширенную и индексную адресацию**- Команды, использующие расширенную и индексную адресациювания этих команд в порядке увеличения сложности.INCA, INCB, INC (opr)Команды инкремента и декремента являются простейDECA, DECB, DEC (opr)шими арифметическими операциями и служат соответственнодля увеличения и уменьшения на единицу значения регистраS X H I N Z V CОЭВМ или ячейки памяти.- - - - ? ? ? В зависимости от типа операнда значение регистра статусапосле выполнения команд может принимать различные значения.
При работе с 8-разрядным операндом команды инкременINS, DESта и декремента влияют на флаги отрицательного результата(N), нуля (Z) и переполнения (V). В случае, если операндом явS X H I N Z V Cляется указатель стека, значение регистра статуса остается не- - - - - - - изменным. При операциях с индексными регистрами командыинкремента и декремента влияют только на флаг нуля (Z).INX, INY, DEX, DEYКак правило, команды INC и DEC используются для организации циклов.
Тот факт, что эти команды не изменяютS X H I N Z V Cфлаг переноса, используется при арифметических операциях- - - - - ? - над многобайтными числами.Следующий простой пример иллюстрирует работу этих команд:cpu6811org$c800ldaa #$10; поместить в регистр A; значение $10inca; увеличить на 1tab; поместить в регистр Bdecb; уменьшить B на 1std$10; сохранить регистры A и B; в ячейках $10, $11 соответственноldx$10; загрузить в регистр Xinx; инкрементировать регистр XАрифметические команды.14desNEGA, NEGB,NEG (opr)S X H I- - - -N Z V C? ? ? ?Лабораторная работа №3; декремент указателя стекаКоманда NEG замещает операнд его двоичным дополнением. Другими словами можно сказать, что результатом операции является изменение знака числа, представленного в дополнительном коде.
Продемонстрируем на примере эмуляциюкоманды INC через NEG и DEC:cpu6811org$c800nega; изменить знак числаdeca; увеличить на 1nega; изменить знак числаКоманды сравнения используются при сравнении значеCMPA (opr), CMPB (opr),ния регистра со значением ячейки памяти или регистра. ФакCPX (opr), CPY (opr),тически происходит операция вычитания ячейки памяти, укаCPD (opr), CBAзанной в качестве операнда, или регистра B (в случае командыCBA) из соответствующего регистра МК. Команды не оказыS X H I N Z V Cвают влияния на операнды, изменяется лишь регистр статуса. В- - - - ? ? ? ?дальнейшем результат обычно используется командами перехода.cpu6811org$c800ldaa #$10; инициализация регистров А и Вldab #$50cba; сравнение регистров A и Bstab $01cmpb $01; сравнение содержимого регистра B; с ячейкой $01При выполнении команд сложения происходит суммироABA,вание содержимого регистра-приемника с непосредственно заADCA (opr), ADCB (opr),данным значением, ячейкой памяти или другим регистром.