Маскирование данных и организация условных переходов




Во многих случаях при выполнении программ необходимо проверять, устанавливать или изменять состояние одного или нескольких разрядов числа в аккумуляторе. При этом разряды числа, которые не участвуют в операции, нужно заблокировать, то есть исключить из рассмотрения.

Блокирование, то есть исключение из рассмотрения одного или нескольких разрядов числа, называется маскированием.

Для блокирования отдельных разрядов данных используется специальное число, называемое маской. При составлении маски в разряды, которые необходимо заблокировать, записываются нули, а в разряды, которые будут исследоваться, записываются единицы. Далее между числом и маской выполняется логическая операция.

При выполнении команды логического умножения AND производится поразрядная конъюнкция. Данная команда применяется для проверки значения определенного бита данных в аккумуляторе с помощью слова-маски, записанного в регистре Х или в любую ячейку памяти. При этом значение проверяемого бита равно отрицанию от значения флага z. Кроме того, с помощью команды AND, используя слово-маску, можно сбрасывать определенные биты слова в аккумуляторе.

При выполнении логического сложения ORA осуществляется поразрядная дизъюнкция операндов. Эта команда применяется для установки определенных битов слова в аккумуляторе с помощью слова-маски, а также упаковки из полей других слов.

При выполнении команды "исключающее ИЛИ" (EOR) производится поразрядное сложение по mod2. Эта команда применяется для инвертирования определенных битов слова с помощью слова-маски на основе тождества: . Другое применение команды EOR связано со сравнением слов на абсолютное равенство. В единственном случае, когда операнды совпадают, результат операции содержит нули во всех разрядах (согласно тождеству ), о чем сигнализирует флаг z.

При решении задач маскирования данных часто используются команды условных переходов. Команды условного переходов Bcc производят загрузку в PC нового адреса, если выполняется определенное условие. В табл.6 приведены 18 видов условий, которые вызывают ветвление программы. Мнемокод условия сс приписывается к букве B, образуя мнемокод соответствующей команды условного ветвления. Например, B + PL = BPL - мнемокод команды ветвления при положительном результате предыдущей операции (признак N=0).

Большинство условий задается определенными значениями признаков в регистре CCR или комбинацией значений признаков, которые определяется соответствующим логическим выражением. Обычно эти значения признаков устанавливаются с помощью предыдущей команды сравнения или тестирования. Условием ветвления может быть равенство (Z=1) или неравенство (Z=0) сравниваемых операндов, а также различные варианты соотношений между ними. При сравнении операндов со знаком устанавливаются соотношения “больше”, “меньше”, “больше или равно”, “меньше или равно” (>, <, >=, <=). При сравнении беззнаковых операндов аналогичные соотношения (>, <, >=, <=) определяют условия “выше”, “ниже”, “ниже или равно”, “выше или равно”.

Таблица 6. Мнемокоды и условия выполнения команд условных переходов Bcc

Мнемкод cc Проверяемое условие Логическое выражение
NE Не равно (ненулевой результат) Z = 0
EQ Равно (нулевой результат) Z = 1
HI Выше (Z Ú C) = 0
LS Ниже или равно (Z Ú C) = 1
HS Выше или равно (нет переноса) C = 0
LO Ниже (есть перенос) C = 1
BGT Больше Z Ú (N Å V) =0
BLE Меньше или равно Z Ú (N Å V) =1
BGE Больше или равно N Å V = 0
BLT Меньше N Å V = 1
PL Положительный результат N = 0
MI Отрицательный результат N = 1
HCC Нет переноса между тетрадами H = 0
HCS Есть перенос между тетрадами H = 1
MC Прерывания разрешены I = 0
MS Прерывания запрещены I = 1
IH Отсутствие запроса прерывания IRQ# = 1
IL Поступление запроса прерывания IRQ# = 0

В качестве условий ветвления могут также использоваться значения признаков N, H и маски прерывания I. Одним из условий ветвления может быть поступление внешнего запроса прерывания на вход IRQ#.

Проверку содержимого заданного бита в числе можно также выполнять с помощью команд: BRCLR, BRSET.

Команды BRCLR, BRSET проверяют значение n-го бита в операнде, выбираемом с помощью 8-битной прямой адресации, и выполняют ветвление, если битравен 0 или 1. Номер проверяемого бита n задается в этих командах с помощью непосредственного операнда #Im8=n. Эти команды содержат три байта, поэтому при их выполнении содержимое PC увеличивается на 3.

 

 

ВЫПОЛНЕНИЕ РАБОТЫ

1. Изучить команды арифметических, логических и битовых операций, команды сравнения, сдвигов и передачи управления, выполняемые контроллером MC68HC908GP32.

2. Включите питание инструментального компьютера, работающего под управлением ОС Windows 95 или старшей версии с установленным пакетом программ отладки ICS08GPZ; запустите интегрированную среду программирования WinIDE.exe.

3. После выполнения этой процедуры на экране монитора должно появиться главное окно среды программирования WinIDE, в котором доступно меню, функциональные клавиши и окна редактирования исходного текста.

4. В новом окне редактора ввести исходный текст программы, содержащий различные варианты применения команд арифметических, логических и битовых операций, а также команд сравнения и сдвигов (табл. 1. - 6) с использованием различных способов адресации и команд передачи управления.

(Примечание. При выполнении команд обратить внимание на изменение содержимого регистра состояния CCR).

5. Выполнить компиляцию программы путем нажатия клавиши Assemble/Compile File. В случае получения сообщений об ошибке исправить исходный текст программы и повторить попытку компиляции.

6. Войти в режим моделирования (симуляции) путем нажатия клавиши Simulator. Проконтролировать правильность выполнения команд, используя окна CPU08, Memory Window 1, Code Window 1: Source.

По указанию преподавателя ввести код программы в память микроконтроллера с помощью приложения Programmer. Войти в режим отладки путем нажатия клавиши In-Circuit Debuger. Проконтролировать правильность выполнения команд, используя окна CPU08, MemoryWindow1, CodeWindow1:Source.

 

Упражнения

Для каждого из приведённых ниже заданий написать программу на ассемблере, используя среду WinIDE. Отладить программу с помощью программы Simulator. Убедиться в правильности выполнения программы. Объяснить полученные результаты и содержимое регистра признаков. Сохранить копии экранов с результатами работы программ в файлах.

 

ВАРИАНТ 1

 

1. Используя непосредственный способ адресации, перешлите десятичные числа 56 и 83 в ячейки памяти 40 и 41 соответственно. Результат сложения этих чисел запишите в ячейку памяти 42, используя прямой способ адресации. Посмотрите содержимое ячеек памяти 40, 41, 42.

2. Сложите два числа 07 и 04, используя непосредственный способ адресации. Результат запишите в ячейку памяти с адресом 101. Из полученного результата вычтите число 06, хранящееся по адресу 110, используя прямой способ адресации. Результат запишите в ячейку памяти 102, используя индексный способ адресации. Полученный результат помножьте на число 02. Результат запишите в ячейку памяти 103. Очистите регистр АСС. Полученный результат поделите на число 5. Результат запишите в ячейку памяти 104. Посмотрите содержимое регистров АСС, Х и ячеек памяти 101, 102, 103, 104.

3. Запишите число 44 в аккумулятор. Сделайте поразрядную логическую инверсию числа в аккумуляторе. Перешлите результат в регистр Х.. Снова сделайте поразрядную логическую инверсию числа в регистре А. Перешлите результат из аккумулятора в регистр Н. Посмотрите результат, полученный в регистре Н:Х.

4. Проверьте наличие 1 во втором и в пятом разрядах числа в регистре X (число задаётся преподавателем). Запишите в регистр Н число FF, если в этих разрядах установлена единица, и запишите в регистр Н число 00 в любом другом случае.

5. Запишите в регистр Х код ЕЕ, если число в регистре А больше 2 и меньше 7. В другом случае запишите в регистр Х код 00. Число в регистре А задаётся преподавателем.

6. Сделайте проверку наличия 0 в каком-либо разряде аккумулятора (число в аккумуляторе задаётся преподавателем) и запишите в регистр Х номер этого разряда. Если установлены несколько разрядов в 0, то запишите их количество в регистр Н, а номера разрядов в ячейки памяти, начиная с адреса 40.

7. Запишите в ячейку памяти с адресом 50 число ВВ. Выполните над этим числом различные варианты сдвигов влево(ASL, LSL, ROL), записывая результат каждой операции сдвига последовательно в ячейки памяти (51, 52, 53). Полученные числа сложите и результат запишите в ячейку памяти с адресом 54. Посмотрите содержимое ячеек памяти 51, 52, 53, 54.

8. Запишите в регистр А число 0F. Сделайте 4 циклических сдвига влево. Результат запишите в ячейку памяти с адресом 100. Произведите в аккумуляторе циклический сдвиг вправо до тех пор, пока не инвертируется содержимое флага С. Посмотрите содержимое аккумулятора и регистра признаков.

9. Из двух однобайтовых чисел 78 и 3С составьте последовательность чисел 73, 7С, 83, 8С и запишите их в ячейки памяти, начиная с адреса 65, используя индексную адресацию. Посмотрите содержимое ячеек памяти 65, 66, 67, 68.

10. Запишите в регистр АСС число FF. С помощью непосредственного вычитания вычтите из (АСС) число 0Е. Если результат вычитания окажется отрицательным, то инвертируйте аккумулятор и повторяйте команду непосредственного вычитания числа 0Е из (АСС) до тех пор, пока результат этого вычитания не станет положительным. Посмотрите содержимое регистра АСС и ССR.

 

ВАРИАНТ 2

 

1. Используя непосредственный способ адресации, перешлите десятичные числа 67 и 94 в ячейки памяти 50 и 51 соответственно. Результат сложения этих чисел запишите в ячейку памяти 52, используя прямой способ адресации. Посмотрите содержимое ячеек памяти 50, 51, 52.

2. Сложите два числа 06 и 03, используя непосредственный способ адресации. Результат запишите в ячейку памяти с адресом 201. Из полученного результата вычтите число 05, хранящееся по адресу 210, используя прямой способ адресации. Результат запишите в ячейку памяти 202, используя индексный способ адресации. Полученный результат помножьте на число 04. Результат запишите в ячейку памяти 203, используя индексный способ адресации со смещением. Очистите регистр АСС. Полученный результат поделите на число 6. Результат запишите в ячейку памяти 204. Посмотрите и объясните результаты, полученные в ячейках памяти 201, 202, 203, 204, регистрах АСС, Н:Х.

3. Запишите в аккумулятор число 55. Увеличьте в два раза содержимое аккумулятора. Перешлите результат из аккумулятора в ячейку памяти 115, используя индексную адресацию со смещением. Посмотрите содержимое регистров А, Н, Х и ячейки памяти.

4. Проверьте наличие 1 в нулевом и в седьмом разрядах числа, записанного в регистр X (число задаётся преподавателем). Запишите в регистр Н число FF, если в этих разрядах установлена единица, и запишите в регистр Н число 00 в любом другом случае.

5. Запишите в регистр Х код ВВ, если число в регистре А меньше 3 или больше 8. В другом случае запишите в регистр Х код 00. Число в регистре А задаётся преподавателем.

6. Запишите в ячейку памяти с адресом 60 число СС. Выполните над этим числом различные варианты сдвигов вправо(ASR, LSR, ROR), записывая результат каждой операции сдвига в последующие ячейки памяти (61, 62, 63). Полученные числа сложите и результат запишите в ячейку памяти с адресом 64. Посмотрите и объясните содержимое ячеек памяти 61, 62, 63, 64.

7. Сделайте проверку наличия 0 в каком-либо разряде аккумулятора (число в аккумуляторе задаётся преподавателем) и запишите в регистр Х номер этого разряда. Если установлены несколько разрядов в 0, то определите их количество (регистр Н) и номера разрядов (в ячейках памяти, начиная с адреса 50). Посмотрите содержимое регистров АСС, Х и использованных ячеек памяти.

8. Запишите в регистр А число F0. Сделайте 4 циклических сдвига вправо. Результат запишите в ячейку памяти с адресом 110. Произведите в аккумуляторе циклический сдвиг влево до тех пор пока не инвертируется содержимое флага С. Посмотрите содержимое аккумулятора и регистра признаков.

9. Из двух однобайтовых чисел А9 и 4В составьте последовательность чисел А4, АВ, 94, 9В и запишите их в ячейки памяти, начиная с адреса 70, используя индексную адресацию. Посмотрите содержимое использованных ячеек памяти.

10. Запишите в регистр А число 00, в индексный регистр Н:Х – число 1FA. Перешлите число 01 из ячейки памяти с адресом 40 в ячейку памяти 1FA, используя индексную адресацию. Увеличьте содержимое Н:Х на 1. Увеличьте (1FA) на 1. Сравните (А) с (Х). Если числа не равны, повторяйте операции увеличения (Н:Х) и (1FA) на 1 до тех пор пока (А) не станет равным (Х). Посмотрите содержимое регистров АСС, Н:Х и ячейку памяти c адресом 1FA.

ВАРИАНТ 3

 

1. Сложите два числа 07 и 04, используя непосредственный способ адресации. Результат запишите в ячейку памяти с адресом A1. Из полученного результата вычтите число 06, хранящееся по адресу A0, используя прямой способ адресации. Результат запишите в ячейку памяти A2, используя индексный способ адресации. Полученный результат помножьте на число 05. Результат запишите в ячейку памяти A3. Очистите регистр АСС. Полученный результат поделите на число 3. Результат запишите в ячейку памяти A4. Посмотрите содержимое регистров АСС, Х и ячеек памяти А1, А2, А3, А4.

2. В ячейки памяти, начинающиеся с адреса 80, запишите 10 произвольных чисел. Выполняя программу в пошаговом режиме, сравните, начиная с первого числа, последовательно каждое последующее число с предыдущим и сохраните содержимое регистра CCR после выполнения каждого шага программы в ячейках памяти, начиная с адреса 41. Посмотрите и объясните значения,полученные в этих ячейках памяти.

3. Запишите в ячейки памяти, начиная с адреса 60, 10 чисел. Найдите среди этих чисел максимальное число, запишите его в аккумулятор, а адрес числа запишите в H:X.

4. Проверьте наличие 1 в первом и шестом разрядах числа в регистре X (число задаётся преподавателем). Запишите в регистр Н число FF, если в этих разрядах установлена единица, и запишите в регистр Н число 00 в любом другом случае.

5. Запишите в регистр Х код СС, если число в регистре А больше 5 и меньше 8. В другом случае запишите в регистр Х код 00. Число в регистре А задаётся преподавателем.

 

6. Запишите в ячейку памяти с адресом 70 число DD. Выполните над этим числом различные варианты сдвигов влево(ASL, LSL, ROL), записывая результат каждой операции сдвига в последующие ячейки памяти (71, 72, 73). Полученные числа сложите и результат запишите в ячейку памяти с адресом 74. Посмотрите и объясните содержимое ячеек памяти 71, 72, 73, 74.

7. Сделайте проверку наличия 0 в каком-либо разряде аккумулятора (число в аккумуляторе задаётся преподавателем) и запишите в регистр Х номер этого разряда. Если установлены несколько разрядов в 0, то определите их количество (регистр Н) и номера разрядов (в ячейках памяти, начиная с адреса 60). Посмотрите содержимое регистров АСС, Х и использованных ячеек памяти.

8. Запишите в регистр А число 0Е. Сделайте 4 циклических сдвига вправо. Результат запишите в ячейку памяти с адресом 120. Произведите в аккумуляторе циклический сдвиг влево до тех пор пока не инвертируется содержимое флага С. Посмотрите содержимое аккумулятора и регистра признаков.

9. Из двух однобайтовых чисел 36 и 23 составьте последовательность чисел 32, 33, 62, 63 и запишите их в ячейки памяти, начиная с адреса 80, используя индексную адресацию. Посмотрите содержимое использованных ячеек памяти.

10. Запишите в индексный регистр число 130. Запишите в аккумулятор число АВ. Перепишите в ячейку памяти с адресом 130 число 32, находящееся в ячейке памяти с адресом 50. С помощью команды JSR перейдите к ячейке памяти с адресом 150. В подпрограмме, начинающейся с адреса 150, сложите (А) и (130) и вернитесь в основную программу. Перешлите (А) в ячейку памяти с адресом 51. Инвертируйте (А) и обратитесь к подпрограмме сложения (А) с (130). Запишите результат в ячейку памяти с адресом 52. Завершите программу и проанализируйте содержимое регистра АСС и ячеек памяти с адресами 51 и 52.

 

ВАРИАНТ 4

 

1. Сложите два числа 08 и 05, используя непосредственный способ адресации. Результат запишите в ячейку памяти с адресом B1. Из полученного результата вычтите число 06, хранящееся по адресу B0, используя прямой способ адресации. Результат запишите в ячейку памяти B2, используя индексный способ адресации c пост - инкрементом. Полученный результат помножьте на число 6. Результат запишите в ячейку памяти B3. Очистите регистр АСС. Полученный результат поделите на число 2. Результат запишите в ячейку памяти B4. Посмотрите и объясните содержимое ячеек памяти В1, В2, В3, В4.

2. Запишите 10 произвольных чисел в ячейки памяти, начиная с адреса 50, и складывайте эти числа до тех пор, пока не установится бит переноса. Адрес числа, после сложения с которым установился бит переноса, запишите в две ячейки памяти 100 и 101. Посмотрите содержимое этих ячеек памяти.

3. Сложите два 4 байтовых числа:18A903E6 и B5C2F074. Результат сложения этих чисел сохраните в 4 последовательных ячейках памяти, начиная с адреса 90. Посмотрите содержимое использованных ячеек памяти.

4. Проверьте наличие 1 в третьем и четвёртом разрядах числа в регистре X (число задаётся преподавателем). Запишите в регистр Н число FF, если в этих разрядах установлена единица, и запишите в регистр Н число 00 в любом другом случае.

5. Запишите в регистр Х код ВВ, если число в регистре А больше 2 и меньше 6. В другом случае запишите в регистр Х код 00. Число в регистре А задаётся преподавателем.

6. Запишите в ячейку памяти с адресом 80 число ЕЕ. Выполните над этим числом различные варианты сдвигов вправо(ASR, LSR, ROR), запишите результат каждой операции сдвига в последующие ячейки памяти (81, 82, 83). Полученные числа сложите и результат запишите в ячейку памяти с адресом 84. Посмотрите содержимое ячеек памяти с адресами 81, 82, 83, 84.

7. Сделайте проверку наличия 0 в каком-либо разряде аккумулятора (число в аккумуляторе задаётся преподавателем) и запишите в регистр Х номер этого разряда. Если установлены несколько разрядов в 0, то определите их количество (регистр Н) и номера разрядов (в ячейках памяти, начиная с адреса 70). Посмотрите содержимое регистров АСС, Х и использованных ячеек памяти.

8. Запишите в регистр А число F8. Сделайте 4 циклических сдвига вправо. Результат запишите в ячейку памяти с адресом 130. Произведите в аккумуляторе циклический сдвиг влево до тех пор пока не инвертируется содержимое флага С. Посмотрите содержимое регистра аккумулятора и регистра признаков.

9. Из двух однобайтовых чисел 7E и F2 составьте последовательность чисел 7F, 72, EF, E2 и запишите их в ячейки памяти, начиная с адреса 90, используя индексную адресацию. Посмотрите содержимое использованных ячеек памяти.

10. Запишите в регистр А число 07, в индексный регистр Н:Х – число 130, а в ячейку памяти с адресом 130 – число 83. Сложите (А) и (130). Если получилось отрицательное число, перейдите к подпрограмме, начинающейся с адреса 140, и с помощью подпрограммы вычислите дополнительный код (А). Вернитесь в основную программу и запишите (А) в (130). Посмотрите содержимое регистра АСС и ячейки памяти с адресом 130. Объясните полученные результаты.

ВАРИАНТ 5

 

1. Используя непосредственный способ адресации, перешлите десятичные числа 68 и A5 в ячейки памяти 60 и 61 соответственно. Результат сложения этих чисел запишите в ячейку памяти 62, используя прямой способ адресации. Посмотрите содержимое ячеек памяти с адресами 60, 61.

2. Перед выполнением программы посмотреть содержимое указателя стека. Изменить содержимое указателя стека, сложив его с числом 80. Сложить два числа 13 и 05, используя непосредственный способ адресации. Результат записать в стек. Изменить знак результата и записать его в стек. Из полученного результата вычесть число 15, хранящееся по адресу 102, используя индексный способ адресации. Результат записать в стек. Изменить знак результата и записать его в стек. Перемножить содержимое регистров АСС и Х. Результат записать в стек. Изменить знак результата и записать его в стек. Содержимое регистра Н и АСС поделить на число 4. Результат записать в стек. Изменить знак результата и записать его в стек. Сохранить содержимое индексного регистра в памяти с начальным адресом 45. Сохранить содержимое SP в индексном регистре Н:Х. Посмотреть содержимое использованных ячеек стека, ячеек памяти 45, 46 и индексного регистра.

3. Загрузить содержимое индексного регистра Н:Х, полученное в предыдущем пункте этого задания в регистр SP. В ячейки памяти, начинающиеся с адреса 150, загрузить из стека 8 чисел. Сложить с учётом переноса, последовательно каждое последующее число с предыдущим и сохранить содержимое регистра признаков после выполнения каждого шага программы в ячейках памяти, начиная с адреса 60. Посмотреть содержимое использованных ячеек памяти.

4. Проверьте наличие 1 в нулевом и седьмом разрядах числа в регистре X (число задаётся преподавателем). Запишите в регистр Н число FF, если в этих разрядах установлена единица, и запишите в регистр Н число 00 в любом другом случае.

5. Запишите в регистр Х код АА, если число в регистре А меньше 2 и больше 6. Число в регистре А задаётся преподавателем.

 

6. Из двух однобайтовых чисел 1С и В2 составьте последовательность чисел 1В, 12, СВ, С2 и запишите их в ячейки памяти, начиная с адреса 40, используя индексную адресацию. Посмотрите содержимое использованных ячеек памяти.

7. Сравните числа, созданные в предыдущем задании, на абсолютное равенство с содержимым аккумулятора. Если выполняется условие равенства одного из чисел, то в регистр Х запишите код FF, в противном случае – код 00. Число в регистре АСС задаётся преподавателем.

8. Сделайте проверку наличия 0 в каком-либо разряде аккумулятора и запишите в регистр Х номер этого разряда. Если установлены несколько разрядов в 0, то определите их количество (регистр Н) и номера разрядов (в ячейках памяти, начиная с адреса 80). Посмотрите содержимое регистров АСС, Х и использованных ячеек памяти.

9. Запишите в регистр А число FС. Сделайте 4 циклических сдвига вправо. Результат запишите в ячейку памяти с адресом 140. Произведите в аккумуляторе циклический сдвиг влево до тех пор пока не инвертируется содержимое флага С. Посмотрите содержимое регистра аккумулятора и регистра признаков.

10. Запишите в индексный регистр число 140. Запишите в аккумулятор число ВС. Перепишите в ячейку памяти с адресом 140 число 43, находящееся в ячейке памяти с адресом 60. С помощью команды JSR перейдите к подпрограмме, начинающейся с адреса 160, сложите (А) и (140) и вернитесь в основную программу. Перешлите (А) в ячейку памяти с адресом 61. Инвертируйте (А) и обратитесь к подпрограмме сложения (А) с (140). Запишите результат в ячейку памяти с адресом 62. Завершите программу и проанализируйте содержимое регистров АСС и ячеек памяти с адресами 60, 61, 62.

 

ВАРИАНТ 6

 

1. Запишите в регистр А число 24. Вычтите из (А) число 34. Результат запишите в ячейку памяти с адресом 105. Посмотрите и объясните результат, полученный в 105 ячейке памяти.

2. Сложите два числа 09 и 06, используя непосредственный способ адресации. Результат запишите в ячейку памяти с адресом C1. Из полученного результата вычтите число 07, хранящееся по адресу C10, используя прямой способ адресации. Результат запишите в ячейку памяти C2, используя индексный способ адресации. Полученный результат помножьте на число 7. Результат запишите в ячейку памяти C4. Очистите регистр АСС. Полученный результат поделите на число 6. Результат запишите в ячейку памяти C5.

3. Запишите в регистр А число 05. Запишите в Н:Х число 105. Уменьшайте на единицу содержимое Н:Х до тех пор пока содержимое регистра Х не станет больше значения в регистре А. Посмотрите регистр Х. Объясните полученный результат.

4. Дан массив из 10 однобайтных чисел, расположенный в ячейках памяти с начальным адресом 85. Перепишите в ячейки памяти, начиная с адреса 100, отрицательные числа из этого массива.

5. Сделайте проверку наличия 0 в каком-либо разряде аккумулятора и запишите в регистр Х номер этого разряда. Если установлены несколько разрядов в 0, то определите их количество (регистр Н) и номера разрядов (в ячейках памяти, начиная с адреса 40). Число в регистре А задаётся преподавателем.

6. Запишите в регистр Х код ЕЕ, если число в регистре А больше 6 и меньше 10. Число в регистре А задаётся преподавателем.

7. Запишите в ячейку памяти с адресом 90 число 3D. Выполните над этим числом различные варианты сдвигов влево(ASL, LSL, ROL), записывая результат каждой операции сдвига в последующие ячейки памяти (91, 92, 93). Полученные числа сложите и результат запишите в ячейку памяти с адресом 94.

8. Запишите в регистр А число C3. Сделайте 4 циклических сдвига вправо. Результат запишите в ячейку памяти с адресом 140. Произведите в аккумуляторе циклический сдвиг влево до тех пор пока не инвертируется содержимое флага С. Объясните полученные результаты.

9. Из двух однобайтовых чисел F6 и 8Е составьте последовательность чисел F8, FE, 68, 6E и запишите их в ячейки памяти, начиная с адреса 80, используя индексную адресацию.

10. Запишите в регистр А число 0А, в индексный регистр Н:Х – число 140, а в ячейку памяти с адресом 140 – число 94. Сложите (А) и (140). Если получилось отрицательное число, перейдите к подпрограмме, начинающейся с адреса 150, и с помощью подпрограммы вычислите дополнительный код (А). Вернитесь в основную программу и запишите (А) в (140). Объясните полученный результат.


 

Список литературы:

1. Шагурин И. И. Архитектура, программирование и применение 8-разрядных микроконтроллеров семейства Motorola 68HC08. Лабораторный практикум.-МИФИ.-2002,-98с.

2. Шагурин И. И. «Микропроцессоры и микроконтроллеры фирмы Motorola»: Справочное пособие. -М.:Радио и связь, 1998- 560с.: ил.

3. Ремизевич Т.В. Микроконтроллеры для встраиваемых приложений. Под редакцией Кирюхина И.С. –М: Додека, 2000.-272с.

4. Предко М. Руководство по микроконтроллерам в 2-х томах. М.: Постмаркет, 2001.

5. Солонина А.И., Улахович Д. А., Яковлев Л. А. Цифровые процессоры обработки сигналов фирмы Motorola. – СПб.:БХВ-Петербург, 2000.-512 с. ил.

6. Бухмин В.С. Микропроцессор КР580ИК80А. Составление и отладка программ на языке ассемблер. Описание к лабораторной работе. Казань, 1995. – 55 с.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: