Бродин В. Б., Шагурин И. И. Микроконтроллеры (1999) (1095894), страница 50
Текст из файла (страница 50)
Реализованы операции: е 8-битовое умножение: 8 бит х 8 бит = 16 бит + 16-битовое умножение: 16 бит х 16 бит - 32 бит + 8-битовое деление: 8 бит/8'бит 16 бит (8 бит частное, 8 бит остаток) + 16-битовое деление: 16 бит/16 бит = 32 бит (16 бит частное, 16 бит остаток) Эти команды работают с парами байтовых регистров (Кше(, Кпта), регистров слова (ЪУК)Г(, ЖК)е) или аккумулятором и регистром В (А, В). При 8- разрядном регистровом умножении результат запоминается в регистре слова, в котором находился первый операнд.
Например, результат выполнения команды МБ(. КЗ,К8 сохраняется в тАГК2. Аналогично, при 16-разрядном умножении результат сохраняется в регистре двойного слова, в котором находился первый операнд. Например, результат команды М()Е ЖК6,'т(ГК18 записывается в 1)К4. При 8-разрядном делении операндами являются байтовые регистры. Результат сохраняется в регистре слова, который служил регистром первого операнда.
Частное записывается в младший байт, а остаток отделения в старший байт. Аналогично, при 16-разрядном делении: первый операнд это регистр слова, а результат запоминается в регистре двойного слова, в который входит регистр слова. Если второй операнд (делитель) равен нулю, то устанавливается флаг переполнеия (ОтГ), другие биты в РБ'тт' и РЯАГ1 не имеют смысла. 3.3.6. Логические команды В архитектуре МСБ-251 набор команд для выполнения логических операций весьма развит.
Команды АХ(., ОКЕ и ХК(. (логическое И, логическое ИЛИ и логическое исключающее ИЛИ) работают с байтами и словами, которые доступны в разных режимах адресации. Регистр длиной байт, слово или аккумулятор можно логически обьединить с регистром, непосредственными данными или данными, адресуемыми прямо или косвенно. Эти команды влияют на флаги 2 и Х.
Кроме команд СЕК (с1еаг), СРЕ (сошр! ешепг), ЯАГАР (зтеар) и четырех команд циклического сдвига, работающих через аккумулятор, микроконтроллеры МСЯ-251 имеют три команды сдвига для регистров длиной байт и слово: 258 МИКРОКОНТРОЛЛЕРМ: АРХИТЕКТУРА ПРОГРАММИРОВАНИЕ, ИНТЕРФЕЙС ЯЬЬ (81т!11 Ье(1 Ьой!Са!) сдвигает содержимое регистра на один бит влево, а на место младшего значащего бита подставляет О. БКЬ (81п11 К!8ЬТ Ьой!Са!) сдвигает содержимое регистра на один бит вправо, а на место старшего значащего бита подставляет О. ЯКА (ЯЫЖ К!8ЬГ Аг!1ЬтпеГ!С) сдвигает содержимое регистра на один бит вправо, старший значащий бит не меняется. 3.3.7.
Команды пересылки данных Команды пересылки копируют данные из одного регистра или ячейки памяти в другой регистр. К ним относятся команды МОЧЕ, а также ХСН, Р()БН и РОР. Команды, передающие всего один бит, сведены в группу с прочими битовыми командами. Команды пересылки МОЧ наиболее распространены, а их режимы адресации в архитектуре МСБ-251 стали разнообразнее. Команда МОЧ может пересылать байт, слово или двойное слово между любыми регистрами, или между регистром и лтобой ячейкой в области адресации.
Команда МОЧХ (Моче Ехгегпа!) пересылает байт из внешней памяти в аккумулятор или наоборот. Внешней памятью служит область, указанная регистром 1) РХЬ, значение которого после сброса равно 01Н. Команда МОЧС (Моче Соде) пересылает байт из памяти программ (область РН) в аккумулятор. Команды МОЧИ (Моче чт111т 81яЬ Ехеепз!Оп) и МОЧХ (Моче чт!ЕЬ Хего Ехгепгйоп) пересылают содержимое 8-разрядного регистра в младший байт 16- разрядного регистра. Старший его байт заполняется знаковым битом (МОЧИ) или нулями (МОЧЕ).
Команда МОЧН (Моче со Н!яЬ 'тЧогд) передает 16-разрядные непосредственные данные в старшее слово регистра двойного слова. Команда ХСН (Ехс!тапйе) меняет местами содержимое аккумулятора и регистра или ячейки памяти. Команда ХСН1) (ЕхсЬапяе 1У!8!Т) меняет местами младшуто тетраду (птЪЫе — четыре бита) аккумулятора с младшей тетрадой байта внутреннего ОЗУ. Команда ХСНО полезна при операциях с двоично-дсятичными числами (ВС1) — Ьшагу содед бес!ттта1). Команды РЫЯН и РОР обеспечивают сохранение информации в стеке. Командой Р()ЯН можно заслать в стек байт, слово или двойное слово, используя непосредственную, прямую или регистровую адресацию.
Командой РОР можно восстановить байт или слово из стека в регистр или в память. 3.3.3. Команды работы с битами Эти команды адресуют отдельный бит в ячейке внутреннего ОЗУ или реги- стре ЯРК. Существуют четыре категории битовых команд: ГЛАВА 2. МИКРОКОНТРОЛЛЕРЫ СЕМЕЙСТВА МСВ"ЕЕ! 259 ЧЕТВ (Вес В!Е), СЕК (С!еаг В11), СРЕ ( Соптр!ешепг В!Е). С помощью этих команд можно установить, очистить или дополнить двоично любой адресуемый бит.
А!еП. (Аве! !.Ой!са1), АХЕ/ (Апе! !.О81са! Соптр1етпепС), ОКЕ (ОК ).о81са1), ОК1./ (ОК !.О81са! Сошр!етттепс). Эти команды позволяют выполнить операцию логического И или логического ИЛИ над любыми адресуемыми битами, а также двоичного дополнения с флагом С 1'. МОтг (Моче) позволяет переслать любой адресуемый бит во флаг переноса (саггу-С"т'), или наоборот. команды условного битового перехода (В1Е-сопе11е!Опа! )втпр) выполняют переход, если бит имеет определенное значение. Эти команды рассматриватотся в группе команд управления.
Битовая адресация. Между рассматриваемыми архитектурами имеются некоторые отличия в способе адресации битов. В архитектуре МСБ-51 бит (обозначим Ы51) можно указать по его положению в определенном регистре или можно указать адрес бита в диапазоне ООН..7гН. В архитектуре МС8-251 адреса у битов отсутствутот. Бит можно адресовать по его имени илн по положению в определенном регистре, но не с помощью адреса бита.
3.3.9. Коаеамды упраалвиия Команды управления изменяют последовательный ход выполнения программы. Процессор вместо выполнения следующей команды из очереди выполняет целевую команду. В команде управления содержится адрес команды (цели) перехода. В команде может быть указан безусловный адрес перехода, как при возврате из подпрограммы, илн использована относительная, прямая или косвенная адресация. Относительная адресацият адрес перехода в команде управления задан в виде 8-битового знакового смешения (ге!) относительно адреса следующей команды. Прялеая адресацилг в команде управления задан адрес перехода, который может иметь 11 (аде!Т11), 16 (аддг16) или 24 бита (ае(дг24).
Адрес цели записывается в счетчик команд (РС). ат!дг11: только младшие 11 бит РС изменяются; т.е. адрес перехода должен быть в текущем 2-Кбайт блоке (2-Кбайт блок, включающий в себя первый байт следующей команды). ае!дг16: только младшие 16 бит РС изменяются; т.е. адрес перехода должен быть в текущем 64-Кбайт регионе (64-Кбайт регион, включатощий первый бай г следующей команды). гбо МИКРОКОНТРОЛЛЕРЫ: АРХИТЕКТГРЯ ПРОГРАММИРОВАНИЕ ИНТЕРФЕЙС ат!бг24: адрес перехода может быть в лтобом месте 16-Мбайт адресной обла- сти. 1тосаеннал адресация. Возможно два типа косвенной адресации в командах управления. Для команд ЕСА)Л.
!м Жг! и 1)МР 4РЖТ)' адрес перехода расположен в текушей области размером 64-Кбайта. 16-разрядный адрес из ЖК! передается в младшие 16 разрядов РС. Старшие 8 разрядов РС остаются от адреса следующей команды. Для команды )МР ФА+1)РТЕ сумма аккумулятора и РРТВ передается в младшие 16 разрялов РС, а в старшие 8 разрядов РС записывается значение ГГ:, что локалтизует адрес перехода в области памяти программ МСЯ-51. Условные переходы. Архитектура МС5-251 поддерживает условные переходы по значениям битов (Ь!1-сопт!!Г!Отта! !шпрз), по результату сравнения и по содержимому аккумулятора.
Все условные переходы являются относительными, адрес перехода (ге!) должен находиться в текущем 256-байтном блоке программы. В системе команд имеется три вида условно-битовых перехода: ,1В ()ппгЬ оп В!с): переход, если бит установлен. .1)А!В ()ГГтттЬ оп !т!Ос В!!): переход, если бит не установлен. .1ВС ()шп1т оп В!Г гйеп С!еаг !Г): переход, если бит установлен, с последую- щей очисткой этого бита. Условные переходы по результату сравнения проверяют результат выполнения предшествующей команды сравнения (СМР). Команда перехода проверяет регистры РЯЪ' и РЯ%1 и интерпретируют состояние их флагов, которые могли быть установлены или сброшены командой сравнения (СМР).