Лабораторные МС 68HC11 (1086185), страница 3
Текст из файла (страница 3)
Алгоритм работы команд 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),данным значением, ячейкой памяти или другим регистром.
ВADDA (opr), ADDB (opr)командах ADC к результату дополнительно прибавляется значение флага переноса. Результат сложения аккумуляторов коS X H I N Z V Cмандой ABA заносится в регистр A, результат сложения ре- - ? - ? ? ? ?гистра B с индексным регистром - в соответствующий индексный регистр.ADDD (opr), SUBD (opr),При выполнении команд вычитания происходит вычитаSBA,ние из регистра-приемника второго операнда (в случае SBASBCA (opr), SBCB (opr),происходит вычитание регистра B из регистра A).
КомандыSUBA (opr), SUBB (opr)SBC дополнительно вычитают из регистра-приемника значение флага переноса.S X H I N Z V CКоманды, учитывающие флаг переноса, как правило, ис- - - - ? ? ? ?пользуются при операциях над многобайтными числами. Нижеприводится пример сложения и вычитания двух 3-х байтныхABX, ABYчисел, расположенных в ячейках $0Þ$2 и $3Þ$5 соответственно.В одной из последующих лабораторных работ мы рассмотS X H I N Z V Cрим подобный пример, реализованный с помощью цикла.- - - - - - - cpuorgldxldd6811$c800#010,x; сложение младших 2 байтАрифметические команды.15Лабораторная работа №3adddstddexldaaadcastaaldxldaaldabsbadexldaasbcastaadexldaasbcastaa3,x0,x; переход к 3-му байту0,x3,x0,x#$20,x3,x; сложение с учетом переноса; записываем результат; вычитание с использованием SBA; переход к следующему байту0,x3,x0,x; переход к последнему байту0,x3,x0,x; результат получен, записываем; последний байтДвоично-десятичная коррекция после сложения команDAAдами ABA, ADDA и ADCA обеспечивает суммирование двухчисел, представленных в двоично-десятичном формате.
ПриS X H I N Z V Cэтом флаг переноса используется в качестве старшего бита,- - - - ? ? ?* ?обеспечивая получение корректного двоично-десятичного зна*-значение не определеночения.Фактически, команда DAA после команд сложения действует следующим образом:1. если содержимое младшей тетрады аккумулятора больше 9 или флаг полупереноса H установлен в “1”, то к аккумулятору добавляется число 6;2. если содержимое старшей тетрады аккумулятора стало после этого более 9 или установленфлаг переноса, то число 6 добавляется и к старшей тетраде аккумулятора.cpu6811org$c800ldaa #$99; 99 в двоично-десятичном кодеldab #$20aba; результат равен B9daa; коррекция до двоично-десятичного; значения: C = 1, A = $19tabldaa #0; использование clra не допустимо,; т.к.