Бинар 5б инструкция: Бинар 5д компакт инструкция по эксплуатации

Содержание

Сервис и документация

Гарантийные обязательства:

  • Гарантийный срок изделия составляет 18 месяцев со дня продажи или 1000 моточасов для воздушных отопителей и 500 моточасов для жидкостных подогревателей или пробег автомобиля с установленным изделием составил не более 50000 км.
  • Установку изделия должны проводить организации, уполномоченные Производителем.
  • Производитель гарантирует нормальную работу своей продукции при условии соблюдения потребителем всех правил предусмотренных в руководстве по эксплуатации завода — изготовителя.

Гарантийными случаями не являются:

  • форс-мажорные обстоятельства: удар молнии, пожар, затопления, наводнения, недопустимые колебаний напряжения и ДТП;
  • несоблюдения правил эксплуатации, хранения и транспортировки;
  • неправильного монтажа, ремонта или обслуживания, если они проведены лицами и организациями, не уполномоченными Производителем на производство монтажа и гарантийного ремонта;
  • отказа работы отопителя по причине загрязнения камеры сгорания;
  • нарушения работы электрооборудования автомобиля;
  • самостоятельного ремонта изделия или использования неоригинальных запасных частей.Бинар 5б инструкция: Бинар 5д компакт инструкция по эксплуатации

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

Техническая поддержка

Наша компания уделяет особое внимание повышению качества производимых изделий, развитию качественного предоставления услуг монтажа, сервисного и технического обслуживания.
Качество производимой продукции обеспечивается сертифицированной системой менеджмента качества, соответсвующей требованиям международных стандартов качества ISO 9001:2008, ISO/TS 16949:2009.
В наших изделиях используются уникальные запатентованные  горелочные устройства собственной разработки, адаптированные под российское топливо и суровые условия эксплуатации до -45 градусов Цельсия.Бинар 5б инструкция: Бинар 5д компакт инструкция по эксплуатации
Так же немаловажным фактором является наличие обширной дилерской сети по всей России, ближнего и дальнего зарубежья. Вся наша дилерская сеть осуществляет полный спектр услуг по продажам, монтажу, гарантийному и послегарантийному обслуживанию.
Все дилерские центры имеют необходимое оборудование для восстановления и проверки работоспособности изделия в максимально короткий срок.
Мы ценим каждого потребителя, и нам важно Ваше мнение о качестве продукции, которой Вы пользуетесь.
Наши квалифицированные специалисты готовы оказать любую техническую поддержку по любому изделию.
ICQ 275085154
Телефон: (846)2070520 ( только по техническим вопросам)
E-mail: [email protected]

Обучение и сертификация

Предприятия, желающие заниматься установкой подогревателей «Теплостар», «Бинар» или воздушных отопителей «Планар», должны пройти обучение и получить свидетельство на право проведения гарантийных работ. Для этого необходимо прислать заявку на обучение в ООО «Сервисная компания».Бинар 5б инструкция: Бинар 5д компакт инструкция по эксплуатации Обучение может проводиться в Самаре (обучение бесплатное), либо по месту нахождения сертифицируемого предприятия (в этом случае командировочные расходы берет на себя заказчик). ООО «Сервисная компания» проводит предварительный прием заявок на обучение и сертификацию на 2016 год. По вопросам подачи заявок обращаться в сервисную компанию по тел. (846) 2662539, 2662541, 2662542, 2662543 или на Е-mail: [email protected]

РУКОВОДСТВА ПО ЭКСПЛУАТАЦИИ

РУКОВОДСТВА ПО РЕМОНТУ

КАТАЛОЖНЫЕ НОМЕРА ИЗДЕЛИЙ

УПАКОВОЧНЫЕ ЛИСТЫ (КОМПЛЕКТАЦИЯ)

РАЗБЛОКИРОВКА ПЛАНАР 8ДМ-24

ПЕРЕПРОГРАММИРОВАНИЕ БИНАР 5-12В

ТЕПЛОСТАР 04 ТС, 05ТС

ДОКУМЕНТАЦИЯ НА ВСПОМОГАТЕЛЬНЫЕ УСТРОЙСТВА

РАЗНОЕ

ПРОГРАММЫ ДИАГНОСТИКИ

ТЕХНИЧЕСКИЕ УСЛОВИЯ ИЗДЕЛИЙ

СЕРТИФИКАТЫ СООТВЕТСТВИЯ ПРАВИЛАМ ECE №122 (TUV)

ИНФОРМАЦИОННЫЕ ПИСЬМА

ГАБАРИТНЫЕ РАЗМЕРЫ ИЗДЕЛИЙ

Климат системы автомобиля | Бинар 5Д-12В компакт GP (Дизель) Предпусковой подогреватель 5кВт

Подогреватель предназначен для предпускового разогрева двигателя автомобилей с жидкостной системой охлаждения с объёмом двигателей до 3,5 литров при температуре окружающего воздуха до минус 45°С.Бинар 5б инструкция: Бинар 5д компакт инструкция по эксплуатации

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

Принцип работы и область применения

Подогреватель Бинар 5Б-Компакт работает на бензине, а подогреватель Бинар 5Д-Компакт – на дизельном топливе.

Подогреватели имеют вывод для подсоединения к сигнализации автомобиля или для установки модема и комплектуются электронасосом «Bosch», если работают на бензине.

Подогреватель представляет собой автономное устройство и выполняет следующие функции:

  • Разогрев двигателя при низких температурах для надежного запуска;
  • Дополнительный подогрев двигателя и салона при работающем двигателе в условиях сильных морозов;
  • Подогрев салона и лобового стекла при низких минусовых температурах (для удаления обледенения) при неработающем двигателе;
  • Работа помпы при неработающем подогревателе.

Эти функции реализуются при установке базового комплекта подогревателя, к которому можно подключать устройства, реализующие дополнительные возможности.Бинар 5б инструкция: Бинар 5д компакт инструкция по эксплуатации

Особенности подогревателей Бинар 5Б-Компакт и Бинар 5Д-Компакт

Подогреватели Бинар 5Б-Компакт и Бинар 5Д-Компакт управляются пультом управления с таймером, установленным на панели автомобиля.

Так же управлять подогревателями Бинар можно пультом управления или дистанционно, с помощью GSM модема, отправляя SMS сообщения по сотовому телефону.

Если в автомобиле установлена система дистанционной сигнализации, то для управления подогревателями Бинар можно использовать ее свободный канал.

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

Конструкция и функциональные возможности подогревателей постоянно совершенствуются.

Описание устройства и работы подогревателя

Подогреватель работает независимо от автомобильного двигателя.Бинар 5б инструкция: Бинар 5д компакт инструкция по эксплуатации  Питание подогревателя топливом и электроэнергией осуществляется от автотранспортного средства.

Подогреватель является автономным нагревательным устройством, которое содержит:

  • нагреватель;
  • нагнетатель воздуха для подачи воздуха в камеру горения нагревателя;
  • топливный насос для подачи топлива в камеру сгорания;
  • циркуляционный насос (помпа) для принудительной прокачки рабочей жидкости системы охлаждения (тосола) через теплообменные системы нагревателя и двигателя автомобиля;
  • блок управления (входит в состав нагревателя), осуществляющий управление вышеперечисленными устройствами;
  • пульт управления с таймером для автоматического или ручного запуска подогревателя;
  • жгуты проводов для соединения элементов подогревателя и для соединения с аккумуляторной батареей и отопителем салона автомобиля.
  • Подогреватель своим гидравлическим контуром встраивается в систему охлаждения двигателя таким образом, чтобы его помпа обеспечивала циркуляцию охлаждающую жидкости в двигателе и нагревателе

 Технические характеристики подогревателя

БИНАР-5 КОМПАКТ GPМОДЕЛЬ
ТЕХНИЧЕСКИЕ ХАРАКТЕРИСТИКИ

БИНАР 5Б-КОМПАКТ

БИНАР 5Д-КОМПАКТ

Номинальное напряжение питания, В

12

Расход топлива, л/ч

0,7

0,6

Теплопроизводительность, кВт

5

Допустимое отклонение напряжение питания от номинала, В

9,5.Бинар 5б инструкция: Бинар 5д компакт инструкция по эксплуатации .16

Потребляемая мощность вместе с помпой, Вт

45

Теплоноситель

Охлаждающая жидкость по ГОСТ 28084

Применяемое топливо

бензин по ГОСТ Р 51105

Дизельное топливо по ГОСТ 305

Органы управления

штатно – пульт*, дополнительно -сигнализация**

Режим запуска и остановки

Ручной, автоматический

Масса со всеми комплектующими, кг не более

8

* – пульт – таймер присутствует во всех комплектациях.
Габариты упаковки, см

450 х 260 х 220

Дополнительные функции отопителя Бинар 5

Модульная структура подогревателя двигателя Бинар 5 позволяет подключать устройства, реализующие дополнительные функции.Бинар 5б инструкция: Бинар 5д компакт инструкция по эксплуатации В том числе после приобретения и установки базового комплекта. Подключение минитаймера позволит программировать время запуска предпускового подогревателя или при помощи других дополнительных устройств отправлять команду запуска отопителя с помощью SMS сообщения или звонка с мобильного телефона.

Сервисные коды ошибок Бинар — Теплостар-Пенза

Ниже перечислены коды ошибок для всей линейки автономных подогревателей двигателя Бинар (5S, 5С, 5D, 5Д, 5Б, Компакт, Compact, NEXT (Некст)). Так как ошибки в пределах серии моделей Бинар схожи, мы уместили их в одну таблицу.

Разблокировку ошибки 37 вы можете выполнить сами, следуя инструкции, но обязательно сперва нужно устранить причину ее появления. Если у Вас что-то не получается, то приезжайте к нам — поможем!

* — Метод устранения воздушной пробки из Бинара и системы:

■ Выбрать на пульте управления Бинаром режим температуры

■ Завести двигатель, должен быть не горячий, нажатием педали газа периодически увеличивая обороты до 2500-3000.Бинар 5б инструкция: Бинар 5д компакт инструкция по эксплуатации

Если температура на пульте пошла вверх то Бинар заполнился антифризом. На некоторых авто чтобы полностью выгнать воздушную пробку нужно проехать 15-20 км с участками в горку под нагрузкой.

Блокировка возникает после трех ошибок с кодом 13 во избежание заполнения лишним топливом камеры сгорания.

■ В течении 30 секунд обесточить Бинар вынув прдохранитель 25А (крайний, белого цвета с толстым красно-белым проводом)

■ Через 5 секунд вставить предохранитель на место

Повторить эту последовательность три раза.

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

Номер ошибки Описание неисправности Причины и рекомендуемые методы устранения неисправности
01 Перегрев (по температуре)* Температура в зоне одного из датчиков более 120ºС.Бинар 5б инструкция: Бинар 5д компакт инструкция по эксплуатации Проверить полностью жидкостный контурна наличие воздушных пробок.>
Проверить помпу.
Проверить датчик температуры и датчик перегрева.
Проверить качество тосола, который должен применяться в зависимости от температуры окружающей среды.
02 Возможный перегрев (по разнице температур)
Опознан возможный перегрев. Разница температур, замеренных датчиком перегрева и датчикомтемпературы, слишком большая
Проверить полностью жидкостный контур на наличие воздушных пробок.
Проверить помпу..
Проверить датчик температуры и датчик перегрева.
Проверить качество тосола, который должен применяться в зависимости от температуры окружающей среды.
03-04 Неисправность датчика температуры N1-N2 Короткое замыкание или обрыв проводников.Бинар 5б инструкция: Бинар 5д компакт инструкция по эксплуатации Заменить сборку датчиков (поддаются ремонту)
05 Неисправность индикатора пламени Короткое замыкание на корпус или обрыв в электропроводке индикатора Проверить индикатор пламени. Проверить соединительные провода. Проверить омическое сопротивление между контактами индикатора, которое должно быть не более 10 Ом. При неисправности индикатор пламени заменить.
06 Неисправность датчика температуры на блоке управления Вышел из строя датчик температуры (находиться в блоке управления, замене не подлежит) Заменить блок управления нагревателя
07 Прерывание пламени на режиме работы «МАЛЫЙ» Проверить воздухозаборник, газоотводящий трубопровод и подачу топлива, устранить неисправности, при необходимости заменить топливный насос и индикатор пламени.Бинар 5б инструкция: Бинар 5д компакт инструкция по эксплуатации
08 Прерывание пламени на режиме работы «ПОЛНЫЙ» Проверить воздухозаборник, газоотводящий трубопровод и подачу топлива, устранить неисправности, при необходимости заменить топливный насос и индикатор пламени.
09 Неисправность свечи накаливания Короткое замыкание, обрыв, неисправность блока управления. Проверить свечу накаливания и блок управления
10 Неисправность нагнетателя воздуха. Обороты ниже номинала Посторонние предметы (мусор) мешают вращению крыльчатки или крыльчатка задевает за крышку нагнетателя воздуха.
Проверить электропроводку.Бинар 5б инструкция: Бинар 5д компакт инструкция по эксплуатации Проверить НВ на наличие грязи.
11 Перегрев Скорость нагрева температурных датчиков высокая. 1. Проверить полностью жидкостный контур (возможно образовалась воздушная пробка перед помпой и по этому охлаждающая жидкость не прокачивается через нагреватель).
2. Проверить состояние охлаждающей жидкости на предмет ее текучести при минусовых температурах. 3. Проверить помпу, при необходимости заменить.
12 Отключение, повышенное напряжение. Напряжение питания выше 16В. Проверить напряжение на разъеме ХS2 нагревателя. Проверить предохранители, аккумуляторную батарею, регулятор напряжения автомобиля и подводящую электропроводку
13 Попытки запуска исчерпаны Розжиг не состоялся.Бинар 5б инструкция: Бинар 5д компакт инструкция по эксплуатации (2 раза). Проверить топливопровод, топливный насос и нагнетатель воздуха. Проверить выхлопную трубу. Проверить камеру сгорания, при необходимости почистить отверстие в свечном штуцере КС.
14 Неисправность помпы Обрыв или короткое замыкание токоведущих частей. Проверить электропровода циркуляционного насоса на короткое замыкание и обрыв, проверить помпу. Почистить насосную часть помпы.
15 Отключение, пониженное напряжение. Напряжение питания менее 10В. Проверить напряжение на разъеме ХS2 нагревателя. Проверить предохранители, аккумуляторную батарею, регулятор напряжения автомобиля и подводящую электропроводку.
16 Превышено время на вентиляцию За время продувки недостаточно охлаждён датчик пламени.Бинар 5б инструкция: Бинар 5д компакт инструкция по эксплуатации Проверить воздухозаборник и газоотводящий трубопровод. Проверить индикатор пламени и при необходимости заменить.
17 Неисправность топливного насоса(короткое замыкание) Короткое замыкание в электропроводке топливного насоса. Проверить топливный насос
20 Нет связи между блоком управления и пультом Короткое замыкание или обрыв в электропроводке от изделия к ПУ. Проверить предохранитель 5 А. Проверить цепи и контакты
21 Прерывание пламени на режиме «ПРОГРЕВ» Условия для поддержания горения плохие. Недостаток топлива или воздуха, закопчен теплообменник, засорена выхлопная труба Проверить воздухозаборник, газоотводящий трубопровод и подачу топлива, устранить неисправности, при необходимости заменить топливный насос и индикатор пламени
22 Неисправность топливного насоса(обрыв) Обрыв в электропроводке топливного насоса.Бинар 5б инструкция: Бинар 5д компакт инструкция по эксплуатации Проверить топливный насос
24 Резкое изменение температуры на одном из датчиков. Возможный перегрев в зоне одного из датчиков температуры из-за слабой циркуляции охлаждающей жидкости. Проверить полностью жидкостный контур на наличие воздушных пробок. Проверить помпу. Проверить датчик температуры и датчик перегрева. Проверить качество тосола, который должен применяться в зависимости от температуры окружающей среды.
25 Слишком быстрый нагрев охлаждающей жидкости За 1 цикл работы подогреватель трижды достиг ждущего режима за время менее 6 мин. Проверить полностью жидкостный контур на наличие воздушных пробок. Проверить помпу. Проверить датчик температуры и датчик перегрева.Бинар 5б инструкция: Бинар 5д компакт инструкция по эксплуатации Проверить качество тосола, который должен применяться в зависимости от температуры окружающей среды.
26 Перегружен мотор нагнетателя Нагнетатель потребляет слишком большой ток. Проверить свободный ход крыльчатки нагнетателя, убрать пыль и пр., убедиться в свободном вращении.
27 Неисправность нагнетателя воздуха. Двигатель не вращается (возможно задевание) Проверить НВ на наличие механических помех вращению.Проверить электропроводку, нагнетатель воздуха и блок управления.
28 Неисправность нагнетателя воздуха. Двигатель вращается без управления (возможна неисправность 5В питания в блоке управления).Бинар 5б инструкция: Бинар 5д компакт инструкция по эксплуатации Проверить НВ на наличие механических помех вращению.Проверить электропроводку, нагнетатель воздуха и блок управления.
29 Исчерпаны попытки розжига во время работы подогревателя Количество повторных розжигов больше 4-х. Проверить топливную систему. Проверить затяжку хомутов на топливопроводе, герметичность топливопровод, герметичность щтуцера на топливном насосе, производительность топливного насоса
30 Срыв пламени в камере сгоранияв результате просадки напряжения При снижении напряжения питания бортовой сети воздуходувка останавливается. Проверить аккумуляторную батарею, электропроводку. (Просадка напряжения может возникнуть из-за длительного включения электростартера).Бинар 5б инструкция: Бинар 5д компакт инструкция по эксплуатации
37 Подогреватель заблокирован Ошибка No13 повториласьтри раза подряд Выяснить причину возникновения ошибки, устранить, сбросить ошибку.
50 Нет связи между пультом управления и модемом. Короткое замыкание или обрыв в электропроводке. Проверить предохранитель 5 А. Проверить цепи и контакты
78 Зафиксирован срыв пламени во время работы. Ошибка информационная (не критическая). Показывается для информации пользователя. Проверить затяжку хомутов на топливопроводе, герметичность топливопровода, герметичность штуцера на топливном насосе

Бинар 5

Бинар-5 Компакт Модель
Технические характеристики Бинар 5Б-Компакт Бинар 5Д-Компакт
Номинальное напряжение питания, В 12
Расход топлива, л/ч 0,7 0,6
Теплопроизводительность, кВт 5
Допустимое отклонение напряжение питания от номинала, В 9,5.Бинар 5б инструкция: Бинар 5д компакт инструкция по эксплуатации .16
Потребляемая мощность вместе с помпой, Вт 45
Теплоноситель Охлаждающая жидкость по ГОСТ 28084
Применяемое топливо бензин по ГОСТ Р 51105 Дизельное топливо по ГОСТ 305
Органы управления штатно — пульт*, дополнительно — сигнализация**, GSM модем**
Режим запуска и остановки Ручной, автоматический
Масса со всеми комплектующими, кг не более 9
  • *- пульт — таймер присутствует во всех комплектациях.
  • **- поддерживается запуск с сигнализации, сама сигнализация и модем приобретаются дополнительно.Бинар 5б инструкция: Бинар 5д компакт инструкция по эксплуатации
Габариты упаковки, см (Д х Ш х В) 46 х 27 х 24

Коды ошибок Бинар. Официальный дилер

КодОписание неисправностиПричина неисправностиРекомендуемые методы устранения
01Перегрев
(по температуре)
Температура в зоне одного из датчиков более 120ºС.1. Проверить полностью жидкостный
контур на наличие воздушных пробок.
2. Проверить помпу (п. 5.9).
3. Проверить датчик температуры и
датчик перегрева (п. 5.5).
4. Проверить качество тосола, который
должен применяться в зависимости от
температуры окружающей среды.
03-04Неисправность
датчика
температуры №1
Короткое замыкание или
обрыв проводников.
Заменить сборку датчиков
05Неисправность
индикатора
пламени
Короткое замыкание на
корпус или обрыв в
электропроводке индикатора
Проверить индикатор пламени
06Неисправность
датчика
температуры на
блоке управления
Вышел из строя датчик
температуры (находиться в
блоке управления, замене не
подлежит)
Заменить блок управления
09Неисправность
свечи накаливания
Короткое замыкание, обрыв,
неисправность блока
управления
Проверить свечу накаливания
Проверить блок управления
10Неисправность
нагнетателя
воздуха. Обороты
ниже номинала
Посторонние предметы
(мусор) мешают вращению
крыльчатки или крыльчатка
задевает за крышку
нагнетателя воздуха.
Проверить электропроводку.
Проверить НВ на наличие грязи 
12Отключение,
повышенное
напряжение.
Напряжение питания
выше 16В
Проверить напряжение на разъеме ХS2
нагревателя. Проверить
предохранители, аккумуляторную
батарею, регулятор напряжения
автомобиля и подводящую
электропроводку
13Попытки запуска
исчерпаны
Розжиг не состоялся.
(2 раза)
Проверить топливопровод, топливный
насос и нагнетатель воздуха.
Проверить выхлопную трубу.
Проверить камеру сгорания, при
необходимости почистить отверстие в
свечном штуцере камеры сгорания
14Неисправность
помпы
Обрыв или короткое
замыкание токоведущих
частей.
Проверить электропровода
циркуляционного насоса на короткое
замыкание и обрыв, проверить помпу.
Почистить насосную часть помпы
15Отключение,
пониженное
напряжение.
Напряжение питания
менее 10В
Проверить напряжение на разъеме ХS2
нагревателя. Проверить
предохранители, аккумуляторную
батарею, регулятор напряжения
автомобиля и подводящую
электропроводку.
16Превышено время
на вентиляцию
За время продувки
недостаточно охлаждён
датчик пламени.
Проверить воздухозаборник и
газоотводящий трубопровод.
Проверить индикатор пламени и при
необходимости заменить.
17Неисправность
топливного насоса
(короткое
замыкание)
Короткое замыкание в
электропроводке топливного
насоса.
Проверить топливный насос
20Нет связи между
блоком
управления и
пультом
Короткое замыкание или
обрыв в электропроводке от
изделия к ПУ.
Проверить предохранитель 5 А.
Проверить цепи и контакты
21Прерывание
пламени на
режиме
«ПРОГРЕВ»
Условия для поддержания
горения плохие. Недостаток
топлива или воздуха,
закопчен теплообменник,
засорена выхлопная труба
Проверить воздухозаборник,
газоотводящий трубопровод и подачу
топлива, устранить неисправности, при
необходимости заменить топливный
насос и индикатор пламени
22Неисправность
топливного насоса
(обрыв)
Обрыв в электропроводке
топливного насоса
Проверить топливный насос
24Резкое изменение
температуры на
одном из
датчиков
Возможный перегрев в зоне
одного из датчиков
температуры из-за слабой
циркуляции охлаждающей
жидкости.
1. Проверить полностью жидкостный
контур на наличие воздушных пробок.
2. Проверить помпу 
3. Проверить датчик температуры и
датчик перегрева
4. Проверить качество тосола, который
должен применяться в зависимости от
температуры окружающей среды.
25Слишком
быстрый нагрев
охлаждающей
жидкости
За 1 цикл работы
подогреватель трижды
достиг ждущего режима за
время менее 6 мин.
1. Проверить полностью жидкостный
контур на наличие воздушных пробок.
2. Проверить помпу 
3. Проверить датчик температуры и
датчик перегрева 
4. Проверить качество тосола, который
должен применяться в зависимости от
температуры окружающей среды.
27Неисправность
нагнетателя
воздуха.
Двигатель не вращается
(возможно задевание)
Проверить НВ на наличие
механических помех вращению 
Проверить электропроводку,
нагнетатель воздуха и блок
управления.
28Неисправность
нагнетателя
воздуха.
Двигатель вращается без
управления (возможна
неисправность 5В питания в
блоке управления)
Проверить НВ на наличие
механических помех вращению 
Проверить электропроводку,
нагнетатель воздуха и блок
управления.
29Исчерпаны
попытки розжига
во время работы
подогревателя
Количество повторных
розжигов больше 4-х.
Проверить топливную систему.
Проверить затяжку хомутов на
топливопроводе, герметичность
топливопровод, герметичность
щтуцера на топливном насосе,
производительность топливного насоса
30Срыв пламени в
камере сгорания в
результате
просадки
напряжения
При снижении напряжения
питания бортовой сети
воздуходувка
останавливается.
Проверить аккумуляторную батарею,
электропроводку. (Просадка
напряжения может возникнуть из-за
длительного включения
электростартера).
37Подогреватель
заблокирован
Ошибка №13 повторилась
три раза подряд
Выяснить причину возникновения
ошибки, устранить.
Разблокировать подогреватель
50Нет связи между
пультом
управления и
модемом
Короткое замыкание или
обрыв в электропроводке
Проверить предохранитель 5 А.
Проверить цепи и контакты
78Срыв пламениЗафиксирован срыв пламени
во время работы.
Ошибка информационная
(не критическая).
Показывается для информации
пользователя.
Проверить затяжку хомутов на
топливопроводе, герметичность
топливопровода, герметичность
штуцера на топливном насосе

Бинар 5д компакт инструкция :: girlterpknacal

 

 

 

 

 

 

 

 

 

 

 

 

Работает на бензине, а подогреватель. Три долгих вечера я с товарищем устанавливал это чудо техники. Схема Бинар 5 Компакт 2,5 Добавлен 01.12. Инструкция по. Отопитель подключается к аккумулятору и топливной системе автомобиля. Подогреватель двигателя Бинар 5Д Компакт 12В дизельс японской свечой накала. Инструкция на английском Бинар 5Б компакт. Отчёт: Установка автономного котла Бинар.

5Д СВ на дизельную. Купить предпусковой подогреватель двигателя Бинар 5 по лучшей цене в. При включении и работе подогревателя Бинар 5ДБ Компакт могут возникнуть неисправности. Подогреватель двигателя Бинар 5Б Компакт 12В бензинс японской. Подогреватель двигателя Бинар 5Д Компакт 12В дизельс японской. Подогреватель Бинар 5Б Компакт работает на бензине, а подогреватель Бинар 5Д Компактна дизельном топливе. Инструкция по монтажу.

К. Бинар 5Д компакт: купить, цена, отзывы, инструкция. Бинар, бинар 5. В этом случае блок управления подогревателя автоматически подает команду на выключение подогревателя. Автономный подогреватель Бинар 5Д компакт работает независимо от двигателя автомобиля. Бинар 5Д СВ. Установка предпускового подогревателя Бинар 5Д Компакт.5:17. Подогреватель двигателя Бинар 5Д. Инструкция.

И эксплуатации Каталог деталей отопителя Бинар 5Д Компакт Руководство по ремонту Бинар 5Д Компакт. Подогреватель двигателя Бинар 5Б Компакт 12В бензинс японской свечой накала. Предварительно с Амадеуса была взята инструкция по установки Гидроника. Рассказ владельца— тюнинг. Принцип действия подогревателя двигателя Бинар 5. Подогреватели Бинар 5Б С и Бинар 5Д С имеют вывод для подсоединения.

Инструкция по установке: 1277 КбМощность: 5000 ВтНапряжение: 12 ВТип товара:. А подогреватель я имею действительно Бинар 5Д Компакт. Бинар 5Д СВ. Установка предпускового подогревателя Бинар 5Д Компакт. Если время не терпит, то дали ссылку, где четко в фотографиях дана инструкция по самостоятельной замене датчика и готовы выслать пару. Подогреватель Бинар 5Б Компакт.

 

Вместе с бинар 5д компакт инструкция часто ищут

 

Бинар 5б официальный сайт.

Бинар 5д отзывы.

Бинар 5д купить.

Бинар 5д компакт отзывы.

Руководство по эксплуатации бинар 5.

Бинар 5д ошибки.

Бинар 5 цена.

Бинар 5 подключение к сигнализации

 

Читайте также:

 

 

 

 

404 Not Found

Страница не найдена. Неправильно набран адрес или такой страницы не существует

Карта сайта

  • О компании
  • Каталог
    • Воздушные отопители
    • Предпусковые подогреватели
    • Автосигнализации Starline
    • Запасные части
      • Запчасти для воздушных отопителей «Прамотроник»
      • Запчасти для воздушных отопителей «Планар 2Д»
      • Запчасти для воздушных отопителей «Планар 4Д, 4ДМ, 4ДМ-2»
        • Сетка сб.869
        • Блок управления 12В (4Д, 4ДМ) сб.1270
        • Блок управления 24В (4Д, 4ДМ) сб.1263
        • Блок управления 12В (4ДМ-2) сб.2048
        • Блок управления 24В (4ДМ-2) сб.2043
        • Датчик кабинный сб. 1458
        • Индикатор пламени сб. 817 (4Д, 4ДМ)
        • Индикатор пламени сб. 1316 (4ДМ-2)
        • Камера сгорания сб.812
        • Комплект ремонтный для Планар 4 (Прокладка д. 813, д. 817 ) сб. 2158
        • Крыльчатка д.803
        • Нагнетатель воздуха 24В сб. 1454-01 (4Д/4ДМ)
        • Нагнетатель воздуха 12В сб. 2049 (4ДМ-2)
        • Нагнетатель воздуха 24В сб. 2044 (4ДМ-2)
        • Пульт управления сб. 803-01 (4Д/4ДМ)
        • Пульт управления сб. 2051 (4ДМ-2)
        • Пульт управления ПУ-22 сб. 3340
        • Свеча сб.3333 (сб.886)
        • Термостат 55Н
        • Топливный насос ТН10-6,8/12В сб. 150 (4Д)
        • Топливный насос ТН10-6,8/24В сб.2 (4Д)
        • Топливный насос ТН8 — 6,8 сб. 3640 (сб.2223) (4ДМ/4ДМ-2) 12 вт
        • Топливный насос ТН8 — 6,8 сб. 3645 (сб. 2192) (4ДМ/4ДМ-2) 24 вт
        • Хомут для топливного насоса (резиновый) сб.1467
        • Топливозаборник сб. 2063
        • Пульт управления ПУ 27, сб. 4720 , (сб.3600)
        • Пульт управления ПУ 5, сб. 3520
        • Блок управления 24в сб. 2963 4ДМ-2-S
        • Блок управления 12в сб. 2978 4ДМ-2-S
        • Блок управления 12в сб 2528 (4DМ-2 GP)
        • Блок управления 24в сб 2513 (4DМ-2 GP)
        • Втулка рез.д. 859
        • Датчик перегрева сб.3058 ( 4д-S, 44д-S)
        • Крышка д.811
        • Шайба свечная, д. 818
        • Теплоизоляция, сб. 2739
        • Труба выхлопная, д. 4633, L=0,8м
        • Уплотнение, д. 804
      • Запчасти для воздушных отопителей «Планар 44Д, 44Д-GP»
      • Запчасти для воздушных отопителей «Планар 8Д И 8ДМ»
      • Запчасти для предпускового подогревателя Binar 5S
      • Запчасти для предпусковых подогревателей «Бинар 5»
      • Запчасти для предпусковых подогревателей 14ТС-10 и их модификаций
        • Свеча сб 3000 (сб.165)
        • Сетка сб. 49
        • Топливный насос ТН10-6,8/12В сб. 150
        • Топливный насос ТН10-6,8/24В сб.2
        • Блок управления 24В (пластмассовый корпус), сб.1322
        • Блок управления сб. 1987 (12 вт с термопарой)
        • Блок управления сб. 1982 (24 вт с термопарой)
        • Блок управления сб. 2777 (14ТС-10-24 Мини GP, Tyco)
        • Блок управления сб. 2854 (14ТС-24-С)
        • Датчик температуры сб. 160-01
        • Датчик температуры сб 2349 (14ТС МИНИ-24)
        • Индикатор пламени (лампочного типа) сб.1326
        • Индикатор пламени (термопара) сб. 1914
        • Камера сгорания сб. 238
        • Камера сгорания сб. 2354 (14тс мини)
        • Комплект прокладок 14тс сб.2144
        • Комплект прокладок 14тс мини сб.2711
        • Нагнетатель воздуха сб. 24в 187-01
        • Нагнетатель воздуха сб. 2356 (14ТС-10 Мини) 24в.
        • Пульт управления сб. 1770
        • Пульт управления сб. 24в 1805
        • Свеча сб 2390 (14ТС- 12/9 GP)
        • Свеча сб 2375 (14ТС- 24/18 GP) и для М-5
        • Электронасос 12В П6 (помпа)
        • Электронасос 24В (помпа)
        • Блок управления сб. 4037 (14ТС-10-24 Мини GP, Tyco)
        • Блок управления сб. 4117 (14ТС-10-24 С, насос тн9)
        • Воздухозаборник сб. 207
        • Жгут для SIMCOM-2 (14ТС и 14ТС Mini) сб.3814
        • Модем GSM- SIMCOM 2 сб 3465
        • Кольцо д. 59
        • Патрубок угловой, д.149
        • Теплообменник д. 4800
        • Труба выхлопная, сб. 2322
        • Уплотнение, д. 21
        • Корпус, д. 2438
    • Комплектующие
  • Услуги

двоичных чисел

Обзор

На этом уроке учащиеся лучше познакомятся с двоичными числами. Урок перейдет от систем счисления, созданных учащимися в упражнении «круг-треугольник-квадрат», и сосредоточится на представлении числовых значений с использованием двоичной системы счисления. Хотя студенты и раньше использовали двоичную систему, разработка системы счисления немного отличается. Раньше студенты сопоставляли образцы двоичных значений небольшому набору фиксированных сообщений.Система счисления бесконечна, а также имеет правила подсчета или того, как переходить от одного значения к другому.

Назначение

Системы счисления помогают нам выражать и рассуждать о количествах. Ранние системы счисления были просто системой подсчетов, которые позволяли людям записывать и выполнять простые арифметические действия со значениями. Система счисления, которую мы используем сегодня, использует концепцию разряда, чтобы мы могли выразить любое желаемое значение, комбинируя всего 10 символов (0, 1, 2…).Поэтому мы называем ее системой счисления с основанием 10. При разработке системы счисления для компьютера нам доступны только два символа, соответствующие двум состояниям одного бита. Однако сила разряда позволяет нашей двоичной системе счисления или системе счисления с основанием 2 выражать любое желаемое значение.

При использовании этого двоичного представления чисел определенные значения (1, 2, 4, 8, 16 и т. Д.) Отображаются повторно. При записи в двоичном формате эти значения равны 1, 10, 100, 1000, 10000 и т. Д., А также инкрементные разрядные значения в этой двоичной системе счисления.

Повестка дня

Начало работы (15 минут)

Активность (30 минут)

Заключение

Оценка

Расширенное обучение

Поиск указателя инструкции

Интересно, что здесь есть хорошая выборка всех методов.В зависимости от кодировщика и метода декодирования полезной нагрузки авторы используют тот метод, который им больше всего подходит. В случае, когда они выполняют JMP / Call / Pop, закодированные данные находятся сразу после инструкции вызова, и авторы используют их в качестве индекса для начала закодированного буфера. Методы getPC на основе FPU обычно выполняются примерно в то время, когда ключ загружается в регистр, и прямо перед входом в цикл, который начинает выполнять некоторое декодирование. Bloxor (о котором мы поговорим в другом посте) — очень зрелый кодировщик, который выполнит любую необходимую задачу, чтобы избежать плохих байтов.Он даже рандомизирует свой метод GetPC в случае, если код операции, такой как \ xD9, недоступен.

Подписи


Не рекомендуется писать подпись только для наличия метода GetPC. Эти методы также используются многими законными приложениями в случаях, когда важна компактность кода. Хотя это наблюдается не во всех исполняемых файлах, наличия независимого от позиции кода недостаточно, чтобы сделать вывод о том, что двоичный файл является «злым».

JMP Переадресация / обратный вызов / Pop

Эта техника может быть немного сложной для освоения ванильной логики Yara.Как правило, при рассмотрении такой проблемы проще использовать универсальный дизассемблер / ассемблер для:

  • Определите местонахождение JMP
  • Ознакомьтесь с инструкцией
  • Определить место назначения (если инструкция — ЗВОНОК)
  • Убедитесь, что это POP

В Python и при использовании Radare2 базовой реализацией этой проверки будет следующая логика:

import r2pipe
import sys
r2 = r2pipe.open (sys.argv [1])
r2.cmd (‘aa’)
для местоположения в r2.cmdj (‘/ cj pop’):
для pop в r2.cmdj (‘pdj 1 @% s’% location [‘offset’]):
для xref в pop .get (‘xrefs’, []):
if xref [‘type’] == «CALL»:
call_xrefs = r2.cmdj (‘pdj 1 @% s’% xref [‘addr’]) [0]
для cxref в call_xrefs.get (‘xrefs’, []):
если cxref [‘type’] == «CODE»:
jmp_instruction = r2.cmdj (‘pdj 1 @% s’% cxref [‘addr’ ]) [0]
если jmp_instruction [‘type’] == «jmp»:
print («% s ->% s ->% s»% (jmp_instruction [‘opcode’], call_xrefs [‘opcode’], pop [‘opcode’]))

Это наивная реализация, которая будет искать последовательность от JMP до CALL к инструкции POP.Хотя это не самое эффективное решение, оно должно дать некоторое представление о методе достижения этой цели с помощью Python + Radare2.

Взять этот сценарий и преобразовать его в логику Yara — неудобное, но удобное условие.

rule jump_forward_call_back {
meta:
author = «Nick Hoffman / Jeremy Humble»
description = «JMP Forward / Call Back POP Shellcode Logic»

strings:
/ *
012C1000 | EB 19 | jmp x32dbg.12C101B
012C1002 | 5E | pop esi
012C1003 | 8B FE | mov edi, esi
012C1005 | 83 C7 4C | добавить edi, 4C
012C1008 | 8B D7 | mov edx, edi
012C100A | 3B F2 | cmp esi, edx
012C100C | 7D 0B | jge x32dbg.12C1019
012C100E | B0 7B | mov al, 7B
012C1010 | F2 AE | repne scasb al, byte ptr es: [edi]
012C1012 | FF CF | dec edi
012C1014 | AC | lodsb al, byte ptr ds: [esi]
012C1015 | 28 07 | суббайт ptr ds: [edi], al
012C1017 | EB F1 | jmp x32dbg.12C100A
012C1019 | EB 51 | jmp x32dbg.12C106C
012C101B | E8 E2 FF FF FF | позвоните x32dbg.12C1002

Условие для этого правила немного сложное, но оно необходимо для поддержания управляемости уровней FP. Он проверяет, что начальное смещение в первом jmp приводит к вызову и что вызов ведет обратно к pop после первого прыжка.

* /
$ jmp_fwd_call_back = {eb ?? (58 | 59 | 5A | 5B | 5C | 5D | 5E | 5F) [10-200] e8 ?? ff ff ff}
условие:
для любого i в (1.. #jmp_fwd_call_back): (((256 — uint8 (@jmp_fwd_call_back [i] +
uint8 (@jmp_fwd_call_back [i] +1) + 3)) — int8 (@jmp_fwd_call_back [i] +1)) == 5) и
uint8 (@jmp_fwd_call_back [i] + uint8 (@jmp_fwd_call_back [i] +1) + 2) == 0xe8)
}

Позвонить $ +? / Поп

Call + Pop — один из самых распространенных механизмов, для которого не очень сложно написать подпись. Однако нам нужно знать регистр, в который мы вставляем значение, так как это единственный код операции, и он будет меняться в зависимости от регистра.

В x86 все возможные перестановки «pop » в конечном итоге обобщаются в следующее регулярное выражение Yara: {(58 | 59 | 5a | 5b | 5c | 5d | 5e | 5f)}. Соединение этого с инструкцией call (в данном случае Call $ + 4) даст правило Yara ниже.

rule getpc_method_call_pop
{
meta:
author = «Nick Hoffman / Jeremy Humble»
description = «Shellcode CALL / POP GetPC methods»

strings:
$ call_4_pop = {e8 ff ff ff ff ?? (58 | 59 | 5a | 5b | 5c | 5d | 5e | 5f)}
$ call_5_pop = {e8 00 00 00 00 (58 | 59 | 5a | 5b | 5c | 5d | 5e | 5f)}

условие:
любой из них
}

АРИФМЕТИЧЕСКИХ ИНСТРУКЦИЙ

В этой главе описаны все арифметические и логические инструкции 8051.Примеры программ приведены для иллюстрации применения этих инструкций. В Разделе 6.1 мы обсуждаем инструкции и программы, относящиеся к сложению, вычитанию, умножению и делению беззнаковых чисел. Числа со знаком обсуждаются в разделе 6.2. В разделе 6.3 мы обсуждаем логические инструкции AND, OR и XOR, а также инструкцию COMPARE. Инструкция ROTATE и сериализация данных обсуждаются в Разделе 6.4. В Разделе 6.5 мы приводим некоторые реальные приложения, такие как преобразование BCD и ASCII и тестирование байтов контрольной суммы.

РАЗДЕЛ 6.1: АРИФМЕТИЧЕСКИЕ ИНСТРУКЦИИ

Беззнаковые числа определяются как данные, в которых все биты используются для представления данных, и никакие биты не зарезервированы для положительного или отрицательного знака. Это означает, что операнд может находиться в диапазоне от 00 до FFH (от 0 до 255 в десятичном формате) для 8-битных данных.

Сложение беззнаковых чисел

В 8051 для сложения чисел должен быть задействован регистр аккумулятора (A).Форма инструкции ADD:

.

Инструкция ADD используется для добавления двух операндов. Операнд-адресат всегда находится в регистре A, тогда как операнд-источник может быть регистром, непосредственными данными или в памяти. Помните, что арифметические операции с преобразованием памяти в память никогда не допускаются в языке Ассемблер 8051. Команда может изменить любой из битов AF, CF или P регистра флага, в зависимости от задействованных операндов. Влияние инструкции ADD на флаг переполнения обсуждается в разделе 6.3, поскольку он используется в основном в операциях с числами со знаком. Посмотрите на Пример 6.1.

Пример 6-1

Покажите, как следующие инструкции влияют на регистр флагов.


После сложения регистр A (адресат) содержит 00 и следующие флаги:

CY = 1, так как есть выход из D7.

P = 0, потому что количество Is равно нулю (четное число).

AC = 1, поскольку есть перенос с D3 на D4.


Добавление отдельных байтов

Глава 2 содержала программу, которая добавляла 5 байтов данных. Сумма была намеренно меньше FFH, максимального значения, которое может содержать 8-битный регистр. Чтобы вычислить сумму любого количества операндов, флаг переноса следует проверять после добавления каждого операнда. В примере 6-2 R7 используется для накопления переносов при добавлении операндов к A.

Пример 6-2

Предположим, что ячейки ОЗУ 40–44 имеют следующие значения.Напишите программу, чтобы найти сумму значений. В конце программы регистр A должен содержать младший байт, а R7 — старший. Все значения в шестнадцатеричном формате.

40 = (7D) 41 = (EB) 42 = (C5) 43 = (5B) 44 = (30)

Решение:


Анализ примера 6-2

Три итерации цикла показаны ниже. Трассировка программы предоставляется читателю в качестве упражнения.

  1. В первой итерации цикла 7DH добавляется к A с CY = 0 и R7 = 00,
    и счетчик R2 = 04.

  2. Во второй итерации цикла EBH добавляется к A, в результате получается A
    68H и CY = 1. Поскольку произошел перенос, R7 увеличивается. Теперь счетчик
    R2 = 03.

  3. На третьей итерации C5H добавляется к A, что делает A = 2DH. Снова произошел перенос
    , поэтому R7 снова увеличивается. Теперь счетчик R2 = 02.

В конце, когда цикл завершен, сумма сохраняется в регистрах A и R7, где A имеет младший байт, а R7 — старший байт.

ADDC и сложение 16-битных чисел

При добавлении двух 16-битных операндов данных необходимо учитывать распространение переноса от младшего байта к старшему. В таких случаях используется инструкция ADDC (добавить с переносом). Например, посмотрите на добавление 3CE7H + 3B8DH, как показано ниже.


Когда добавляется первый байт (E7 + 8D = 74, CY = 1). Перенос распространяется на старший байт, в результате чего получается 3C + 3B + 1 = 78 (все в шестнадцатеричном формате).Пример 6-3 показывает вышеуказанные шаги в программе 8051.

Пример 6-3

Напишите программу для сложения двух 16-битных чисел. Цифры — 3CE7H и 3B8DH. Поместите сумму в R7 и R6; R6 должен иметь младший байт.








BCD (двоично-десятичная) система счисления

BCD означает двоично-десятичную дробь. BCD необходим, потому что в повседневной жизни мы используем цифры от 0 до 9 для чисел, а не двоичные или шестнадцатеричные числа.Двоичное представление от 0 до 9 называется BCD (см. Рисунок 6-1). В компьютерной литературе встречаются два термина для чисел BCD: (1) распакованный BCD и (2) упакованный BCD. Опишем каждое следующее.

BCD без упаковки

В распакованном BCD младшие 4 бита числа представляют номер BCD, а остальные биты равны 0. Например, «0000 1001 ″ и« 0000 0101 ″ — это распакованные BCD для 9 и 5, соответственно. Для распакованного BCD требуется 1 байт памяти или 8-битный регистр.

Рисунок 6-1. Код BCD

BCD с упаковкой

В упакованном двоично-десятичном коде один байт содержит два двоично-десятичных числа: одно в нижних 4 битах и ​​одно в верхних 4 битах. Например, «0101 1001» упакован в BCD для 59H. Для хранения упакованных операндов BCD требуется всего 1 байт памяти. Таким образом, одна из причин использования упакованного BCD заключается в том, что он в два раза эффективнее хранит данные.

Возникла проблема с добавлением чисел BCD, которую необходимо исправить.Проблема в том, что после добавления упакованных чисел BCD результат больше не BCD. Посмотрите на следующее.


Сложение этих двух чисел дает 0011 111 IB (3FH), что не является BCD! Номер BCD может состоять только из цифр от 0000 до 1001 (или от 0 до 9). Другими словами, сложение двух чисел BCD должно дать результат BCD. Результат должен был быть 17 + 28 = 45 (0100 0101). Чтобы исправить эту проблему, программист должен добавить 6 (0110) к младшей цифре: 3F + 06 = 45H. Та же проблема могла возникнуть в верхнем разряде (например, в 52H + 87H = D9H).Опять же, чтобы решить эту проблему, необходимо добавить 6 к верхней цифре (D9H + 60H = 139H), чтобы результат был двоично-десятичным (52 + 87 = 139). Эта проблема настолько распространена, что у большинства микропроцессоров, таких как 8051, есть инструкции по ее решению. В 8051 инструкция «DA A» предназначена для исправления проблемы сложения BCD. Это обсуждается далее.

Инструкция DA

Инструкция DA (десятичная корректировка для сложения) в 8051 предназначена для исправления вышеупомянутой проблемы, связанной со сложением BCD.Мнемоника «DA» имеет в качестве единственного операнда аккумулятор «A». Команда DA добавит 6 к младшему полубайту или большему полубайту, если необходимо; в противном случае он оставит результат в покое. Следующий пример проясняет эти моменты.


После выполнения программы регистр A будет содержать 72H (47 + 25 = 72). Инструкция «DA» работает только с A. Другими словами, хотя источник может быть операндом любого режима адресации, адресат должен находиться в регистре A, чтобы DA работал.Также необходимо подчеркнуть, что DA должен использоваться после добавления операндов BCD и что операнды BCD никогда не могут иметь цифру больше 9. Другими словами, цифры A — F не допускаются. Также важно отметить, что DA работает только после инструкции ADD; он не будет работать после инструкции INC.

Краткое изложение действий DA

После инструкции ADD или ADDC,

  1. Если младший полубайт (4 бита) больше 9, или если AC = 1, добавьте 0110 к младшим
    4 битам.

  1. Если верхний полубайт больше 9 или если CY = 1, добавьте 0110 к старшим 4 битам.

В действительности бит флага AC (вспомогательный перенос) не используется иначе, кроме как для сложения и коррекции BCD. Например, добавление 29H и 18H приведет к 41H, что неверно с точки зрения BCD.


Поскольку AC = 1 после сложения, «DA A» прибавит 6 к младшему полубайту. Окончательный результат — в формате BCD.Две разные инструкции для вычитания: SUB и SUBB (вычитание с заимствованием). В 8051 есть только SUBB. Чтобы сделать SUB из SUBB, мы должны сделать CY = 0 до выполнения инструкции. Следовательно, есть два случая для инструкции SUBB: (1) с CY = 0 и (2) с CY = 1. Сначала мы рассмотрим случай, когда CY = 0 до выполнения SUBB. Обратите внимание, что мы используем флаг CY для заимствования.

SUBB (вычесть с заимствованием), когда CY = 0

При вычитании микропроцессоры 8051 (действительно, все современные процессоры) используют метод дополнения до 2.Хотя каждый ЦП содержит схему сумматора, было бы слишком громоздко (и потребовалось бы слишком много транзисторов) разработать отдельную схему вычитателя. По этой причине 8051 использует схему сумматора для выполнения команды вычитания. Предполагая, что 8051 выполняет простую команду вычитания и что CY = 0 перед выполнением инструкции, можно суммировать шаги аппаратного обеспечения ЦП при выполнении инструкции SUBB для чисел без знака следующим образом.

  1. Возьмите дополнение до 2 вычитаемого (исходный операнд).

  2. Добавьте его в список (A).

  3. Инвертировать перенос.

Эти три шага выполняются для каждой команды SUBB внутренним оборудованием ЦП 8051, независимо от источника операндов, при условии, что поддерживается режим адресации. После этих трех шагов результат получен и флаги установлены. Пример 6-5 иллюстрирует три шага.

Пример 6-5


Флаги будут установлены следующим образом: CY = 0, AC — 0, и программист должен посмотреть на флаг переноса, чтобы определить, положительный или отрицательный результат.

Покажите шаги, необходимые для следующего.

Если C Y = 0 после выполнения SUBB, результат положительный; если C Y = 1, результат отрицательный, и адресат имеет дополнение до 2 к результату. Обычно результат остается в дополнении до 2, но для его изменения можно использовать инструкции CPL (дополнение) и INC. Инструкция CPL выполняет дополнение операнда до 1; затем операнд увеличивается (INC), чтобы получить 2-дополнение. См. Пример 6-6.

Пример 6-6


SUBB (вычесть с заимствованием), когда CY = 1

Эта инструкция используется для многобайтовых чисел и берет на себя заимствование младшего операнда. Если CY = 1 до выполнения инструкции SUBB, он также вычитает 1 из результата. См. Пример 6-7.

Пример 6-7

Проанализируйте следующую программу:


Решение:

После SUBB A = 62H — 96H = CCH, и флаг переноса устанавливается в высокий уровень, указывающий на наличие заимствования.Поскольку CY = 1, когда SUBB выполняется второй раз, A = 27H — 12H -1 = 14H. Следовательно, мы имеем 2762H — 1296H = 14CCH.

НЕПОДПИСАННОЕ УМНОЖЕНИЕ И ПОДРАЗДЕЛЕНИЕ

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

Умножение беззнаковых чисел

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


При побайтовом умножении один из операндов должен находиться в регистре A, а второй операнд должен находиться в регистре B. После умножения результат находится в регистрах A и B; младший байт находится в A, а старший байт — в B. В следующем примере 25H умножается на 65H. Результатом являются 16-битные данные, которые хранятся в регистрах A и B.


Таблица 6-1: Сводка беззнакового умножения (MUL AB)

Примечание: Умножение операндов размером более 8 бит требует некоторых манипуляций.Читателю предоставляется возможность поэкспериментировать.

Деление беззнаковых чисел

При делении беззнаковых чисел 8051 поддерживает только побайтовую передачу. Синтаксис следующий.


При делении байта на байт числитель должен быть в регистре A, а знаменатель — в B. После выполнения инструкции DIV частное будет в A, а остаток — в B. См. Следующий пример.


Обратите внимание на следующие моменты для инструкции «DIV AB».

  1. Эта инструкция всегда делает CY = 0 и OV = 0, если знаменатель не равен 0.

    1. Если знаменатель равен 0 (B = 0), OV = 1 указывает на ошибку, а CY = 0. Стандартная практика
      во всех микропроцессорах при делении числа на 0 —
      указывает каким-то образом неверный результат бесконечности. В 8051 флаг OV
      установлен на 1.

    Таблица 6-2: Сводка беззнакового деления (DIV AB)


Приложение для инструкций DIV

Бывают случаи, когда АЦП (аналого-цифровой преобразователь) подключен к порту, и АЦП представляет некоторую величину, например температуру или давление.8-битный АЦП предоставляет данные в шестнадцатеричном формате в диапазоне от 00 до FFH. Эти шестнадцатеричные данные необходимо преобразовать в десятичные. Мы делаем это путем многократного деления на 10, сохраняя остаток, как показано в примере 6-8.

Пример 6-8

Напишите программу (a), чтобы сделать PI входным портом, (b) получить байт шестнадцатеричных данных в диапазоне 00 — FFH из PI и преобразовать его в десятичное. Сохраните цифры в R7, R6 и R5, где младшая цифра находится в R7.

Решение:


Входное значение PI находится в шестнадцатеричном диапазоне от 00 до FFH или в двоичном формате от 00000000 до 11111111.Эта программа не будет работать, если входные данные в BCD. Другими словами, эта программа преобразует двоичный код в десятичный. Чтобы преобразовать одну десятичную цифру в формат ASCII, мы используем OR с 30H, как показано в разделах 6.4 и 6.5.

Пример 6-9

Проанализируйте программу из примера 6-8, предполагая, что PI имеет значение FDH для данных. Решение:

Чтобы преобразовать двоичное (шестнадцатеричное) значение в десятичное, мы многократно делим его на 10, пока частное не станет меньше 10.После каждого деления остаток сохраняется. В случае 8-битного двоичного файла, такого как FDH, у нас есть 253 десятичных числа, как показано ниже (все в шестнадцатеричном формате).


Следовательно, мы имеем FDH = 253. Чтобы отобразить эти данные, они должны быть преобразованы в ASCII, что описано в следующем разделе этой главы.

% PDF-1.4 % 12338 0 obj> эндобдж xref 12338 304 0000000016 00000 н. 0000016422 00000 п. 0000016622 00000 п. 0000016669 00000 п. 0000016699 00000 н. 0000016745 00000 п. 0000016807 00000 п. 0000017131 00000 п. 0000018316 00000 п. 0000018534 00000 п. 0000018649 00000 п. 0000018768 00000 п. 0000019661 00000 п. 0000020495 00000 п. 0000021349 00000 п. 0000022195 00000 п. 0000022951 00000 п. 0000023716 00000 п. 0000024462 00000 п. 0000025215 00000 п. 0000035692 00000 п. 00002 00000 н. 00002 00000 н. 00002 00000 н. 00002
00000 н. 00002
00000 н. 00002 00000 н. 00002 00000 н. 00002

00000 н. 00002

00000 н. 0000292399 00000 н. 0000292568 00000 н. 0000292663 00000 н. 0000292831 00000 н. 0000292954 00000 н. 0000293124 00000 н. 0000293278 00000 н. 0000293373 00000 н. 0000293486 00000 н. 0000293663 00000 н. 0000293775 00000 н. 0000293892 00000 н. 0000294066 00000 н. 0000294169 00000 н. 0000294321 00000 н. 0000294423 00000 н. 0000294546 00000 н. 0000294701 00000 п. 0000294802 00000 н. 0000294902 00000 н. 0000295121 00000 н. 0000295244 00000 н. 0000295416 00000 н. 0000295579 00000 п. 0000295686 00000 н. 0000295810 00000 н. 0000295969 00000 н. 0000296082 00000 н. 0000296178 00000 п. 0000296346 00000 п. 0000296446 00000 н. 0000296554 00000 н. 0000296722 00000 н. 0000296832 00000 н. 0000296933 00000 н. 0000297104 00000 н. 0000297221 00000 н. 0000297338 00000 н. 0000297512 00000 н. 0000297620 00000 н. 0000297729 00000 н. 0000297889 00000 н. 0000297996 00000 н. 0000298099 00000 н. 0000298284 00000 н. 0000298373 00000 н. 0000298471 00000 н. 0000298638 00000 н. 0000298747 00000 н. 0000298921 00000 н. 0000299045 00000 н. 0000299155 00000 н. 0000299320 00000 н. 0000299444 00000 н. 0000299544 00000 н. 0000299710 00000 н. 0000299812 00000 н. 0000299933 00000 н. 0000300090 00000 н. 0000300197 00000 н. 0000300304 00000 н. 0000300467 00000 н. 0000300580 00000 н. 0000300678 00000 н. 0000300836 00000 н. 0000300944 00000 н. 0000301037 00000 н. 0000301191 00000 н. 0000301270 00000 н. 0000301412 00000 н. 0000301518 00000 н. 0000301635 00000 н. 0000301745 00000 н. 0000301858 00000 н. 0000301975 00000 н. 0000302096 00000 н. 0000302209 00000 н. 0000302320 00000 н. 0000302444 00000 н. 0000302562 00000 н. 0000302680 00000 н. 0000302797 00000 н. 0000302919 00000 н. 0000303037 00000 н. 0000303179 00000 н. 0000303297 00000 н. 0000303415 00000 н. 0000303535 00000 н. 0000303655 00000 н. 0000303785 00000 н. 0000303909 00000 н. 0000304024 00000 н. 0000304145 00000 н. 0000304257 00000 н. 0000304369 00000 н. 0000304477 00000 н. 0000304604 00000 н. 0000304714 00000 н. 0000304821 00000 н. 0000304942 00000 н. 0000305055 00000 н. 0000305164 00000 н. 0000305278 00000 н. 0000305391 00000 п. 0000305502 00000 н. 0000305609 00000 н. 0000305719 00000 н. 0000305830 00000 н. 0000305949 00000 н. 0000306062 00000 н. 0000306186 00000 п. 0000306300 00000 н. 0000306408 00000 п. 0000306524 00000 н. 0000306633 00000 н. 0000306744 00000 н. 0000306870 00000 н. 0000306981 00000 н. 0000307087 00000 н. 0000307208 00000 н. 0000307344 00000 н. 0000307474 00000 н. 0000307583 00000 н. 0000307689 00000 н. 0000307804 00000 н. 0000307908 00000 н. 0000308014 00000 н. 0000308128 00000 н. 0000308235 00000 н. 0000308368 00000 н. 0000308515 00000 н. 0000308637 00000 н. 0000308759 00000 н. 0000308880 00000 н. 0000309000 00000 н. 0000309119 00000 н. 0000309249 00000 н. 0000309378 00000 п. 0000309489 00000 н. 0000309606 00000 н. 0000309730 00000 н. 0000309892 00000 н. 0000310027 00000 н. 0000310180 00000 н. 0000310319 00000 п. 0000310456 00000 н. 0000310610 00000 п. 0000310728 00000 н. 0000310874 00000 н. 0000311001 00000 н. 0000311143 00000 н. 0000311270 00000 н. 0000311392 00000 н. 0000311502 00000 н. 0000311615 00000 н. 0000311727 00000 н. 0000311847 00000 н. 0000311962 00000 н. 0000312074 00000 н. 0000312185 00000 н. 0000312310 00000 н. 0000312425 00000 н. 0000312552 00000 н. 0000312676 00000 н. 0000312793 00000 н. 0000312912 00000 н. 0000313037 00000 н. 0000313158 00000 н. 0000313283 00000 н. 0000313401 00000 н. 0000313523 00000 н. 0000313669 00000 н. 0000313790 00000 н. 0000313930 00000 н. 0000314060 00000 н. 0000314183 00000 н. 0000314310 00000 н. 0000314468 00000 н. 0000314588 00000 н. 0000314693 00000 п. 0000314819 00000 н. 0000314929 00000 н. 0000315034 00000 н. 0000315163 00000 н. 0000315289 00000 н. 0000315409 00000 н. 0000315519 00000 н. 0000315624 00000 н. 0000315755 00000 н. 0000315885 00000 н. 0000316016 00000 н. 0000316149 00000 н. 0000316272 00000 н. 0000316442 00000 н. 0000316566 00000 н. 0000316692 00000 н. 0000316807 00000 н. 0000316977 00000 н. 0000317126 00000 н. 0000317252 00000 н. 0000317378 00000 н. 0000317504 00000 н. 0000317639 00000 н. 0000317758 00000 н. 0000317877 00000 н. 0000318005 00000 н. 0000318122 00000 н. 0000318236 00000 п. 0000318358 00000 н. 0000318480 00000 н. 0000318602 00000 н. 0000318716 00000 н. 0000318832 00000 н. 0000318949 00000 н. 0000319139 00000 н. 0000319281 00000 п. 0000319464 00000 н. 0000319652 00000 н. 0000319840 00000 н. 0000320027 00000 н. 0000320215 00000 н. 0000320404 00000 н. 0000320543 00000 н. 0000320753 00000 н. 0000320986 00000 н. 0000321216 00000 н. 0000321405 00000 н. 0000321546 00000 н. 0000321708 00000 н. 0000321845 00000 н. 0000322010 00000 н. 0000322172 00000 н. 0000322334 00000 н. 0000322499 00000 н. 0000322639 00000 н. 0000322779 00000 н. 0000322916 00000 н. 0000323055 00000 н. 0000323193 00000 н. 0000323379 00000 н. 0000323493 00000 н. 0000323618 00000 н. 0000323758 00000 н. 0000323875 00000 н. 0000323979 00000 н. 0000324094 00000 н. 0000324219 00000 н. 0000324349 00000 н. 0000324482 00000 н. 0000324620 00000 н. 0000324752 00000 н. 0000324889 00000 н. 0000325026 00000 н. 0000325122 00000 н. 0000325218 00000 н. 0000325314 00000 н. 0000325410 00000 н. 0000325506 00000 н. 0000325602 00000 н. 0000325698 00000 н. 0000325794 00000 н. 0000325890 00000 н. 0000325986 00000 н. 0000326082 00000 н. 0000326178 00000 н. 0000326274 00000 н. 0000326370 00000 н. 0000326466 00000 н. 0000326562 00000 н. 0000326658 00000 н. 0000326754 00000 н. 0000326850 00000 н. 0000326946 00000 н. 0000006376 00000 п. трейлер ] >> startxref 0 %% EOF 12641 0 obj> поток x} xlMW B «V (: PteQ &% bTXbZMjFAA, \ {} ̙9 ߻ ~} krf93_

Байт-код Dalvik | Проект Android с открытым исходным кодом

00 10x nop Циклы отходов.

Примечание: Псевдо-инструкции, несущие данные, помечены этим кодом операции, в котором случае старший байт блока кода операции указывает на природу данные. См. « Формат упакованных-переключателей-полезной нагрузки», « sparse-switch-payload Формат » и « fill-array-data-payload Format» ниже.

01 12x ход vA, vB A: регистр назначения (4 бита)
B: регистр источника (4 бита)
Перемещает содержимое одного регистра, не являющегося объектом, в другой.
02 22x переместить / из 16 vAA, vBBBB A: регистр назначения (8 бит)
B: регистр источника (16 бит)
Перемещает содержимое одного регистра, не являющегося объектом, в другой.
03 32x ход / 16 vAAAA, vBBBB A: регистр назначения (16 бит)
B: регистр источника (16 бит)
Перемещает содержимое одного регистра, не являющегося объектом, в другой.
04 12x универсальный vA, vB A: пара регистров назначения (4 бита)
B: пара регистров источника (4 бита)
Перемещает содержимое одной пары регистров в другую.

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

05 22x по ширине / от 16 vAA, vBBBB A: пара регистров назначения (8 бит)
B: пара регистров источника (16 бит)
Перемещает содержимое одной пары регистров в другую.

Примечание: Соображения по реализации такие же, как у move-wide , выше.

06 32x ходовой / 16 vAAAA, vBBBB A: пара регистров назначения (16 бит)
B: пара регистров источника (16 бит)
Перемещает содержимое одной пары регистров в другую.

Примечание: Соображения по реализации такие же, как у move-wide , выше.

07 12 х подвижный объект vA, vB A: регистр назначения (4 бита)
B: регистр источника (4 бита)
Перемещает содержимое одного регистра, несущего объект, в другой.
08 22x перемещение объекта / из 16 vAA, vBBBB A: регистр назначения (8 бит)
B: регистр источника (16 бит)
Перемещает содержимое одного регистра, несущего объект, в другой.
09 32x перемещение объекта / 16 vAAAA, vBBBB A: регистр назначения (16 бит)
B: регистр источника (16 бит)
Перемещает содержимое одного регистра, несущего объект, в другой.
0a 11x move-result vAA A: регистр назначения (8 бит) Переместить результат, состоящий из одного слова, не являющегося объектом, самого последнего invoke- kind в указанный реестр.Это должно быть сделано в соответствии с инструкциями сразу после invoke- kind чей результат (одно слово, не объект) нельзя игнорировать; в другом месте недействительно.
0b 11x move-result-широкий vAA A: пара регистров назначения (8 бит) Переместить результат двойного слова самого последнего invoke- kind в указанную регистровую пару. Это должно быть сделано в соответствии с инструкциями сразу после invoke- kind чей результат (двойное слово) нельзя игнорировать; в другом месте недействительно.
0c 11x объект-результат перемещения vAA A: регистр назначения (8 бит) Перемещение объекта результат последнего вызова - вид в указанный реестр. Это нужно делать как инструкция сразу после вызова - вид или заполненный новый массив чей (объектный) результат нельзя игнорировать; в другом месте недействительно.
0d 11x исключение перемещения vAA A: регистр назначения (8 бит) Сохранить только что перехваченное исключение в указанный регистр.Это должно быть первой инструкцией любого обработчика исключений, пойманный исключение нельзя игнорировать, и эта инструкция должна только когда-либо встречаться как первая инструкция обработчика исключений; в любом месте иначе неверно.
0e 10x возврат-недействителен Возврат из метода void .
0f 11x возврат vAA A: регистр возвращаемого значения (8 бит) Возврат из одинарного (32-битного) не объектного значения, возвращающего значение метод.
10 11x возвратный широкий vAA A: пара регистров возвращаемого значения (8 бит) Возврат из метода возврата значения двойной ширины (64-бит).
11 11x возвращаемый объект vAA A: регистр возвращаемого значения (8 бит) Возврат из метода, возвращающего объект.
12 11n const / 4 ВА, # + B A: регистр назначения (4 бита)
B: целое число со знаком (4 бита)
Переместить данное буквальное значение (расширенное знаком до 32 бит) в указанный реестр.
13 21 с const / 16 ВА, # + BBBB A: регистр назначения (8 бит)
B: целое число со знаком (16 бит)
Переместить данное буквальное значение (расширенное знаком до 32 бит) в указанный реестр.
14 31i const vAA, # + BBBBBBBB A: регистр назначения (8 бит)
B: произвольная 32-битная константа
Перемещает данное буквальное значение в указанный регистр.
15 21ч const / high26 vAA, # + BBBB0000 A: регистр назначения (8 бит)
B: целое число со знаком (16 бит)
Переместить данное литеральное значение (с расширением правого нуля до 32 бит) в указанный реестр.
16 21с const-широкий / 16 ВА, # + BBBB A: регистр назначения (8 бит)
B: целое число со знаком (16 бит)
Переместить данное буквальное значение (расширенное знаком до 64 бит) в указанная пара регистров.
17 31i const-широкий / 32 vAA, # + BBBBBBBB A: регистр назначения (8 бит)
B: целое число со знаком (32 бита)
Переместить данное буквальное значение (расширенное знаком до 64 бит) в указанная пара регистров.
18 51l, постоянная ширина vAA, # + BBBBBBBBBBBBBBBB A: регистр назначения (8 бит)
B: произвольная константа двойной ширины (64 бита)
Переместить данное буквальное значение в указанная пара регистров.
19 21ч const-широкий / высокий26 vAA, # + BBBB000000000000 A: регистр назначения (8 бит)
B: целое число со знаком (16 бит)
Переместить данное литеральное значение (с расширением правого нуля до 64 бит) в указанная пара регистров.
1a ​​21c const-string vAA, строка @ BBBB A: регистр назначения (8 бит)
B: индекс строки
Переместить ссылку на строку, указанную данным индексом, в указанный регистр.
1b 31c const-string / jumbo vAA, строка @ BBBBBBBB A: регистр назначения (8 бит)
B: индекс строки
Переместить ссылку на строку, указанную данным индексом, в указанный регистр.
1c 21c const-класс vAA, тип @ BBBB A: регистр назначения (8 бит)
B: индекс типа
Переместить ссылку на класс, указанный в указанном индексе, в указанный регистр.В случае, если указанный тип примитивен, это будет хранить ссылку на вырожденный тип примитивного типа класс.
1d 11x монитор-ввод vAA A: регистр опорного значения (8 бит) Приобретите монитор для указанного объекта.
1e 11x монитор-выход vAA A: регистр опорного значения (8 бит) Отпустите монитор для указанного объекта.

Примечание: Если эта инструкция должна вызвать исключение, она должна сделать так, как если бы компьютер уже продвинулся дальше инструкции. Может быть полезно думать об этом как об успешной инструкции. выполнение (в некотором смысле), и исключение выдается после инструкция, но до , следующая получает шанс запустить. Это определение позволяет методу использовать комплексный блок очистки монитора (например, , наконец, ) как очистка монитора для самого этого блока, как способ справиться с произвольные исключения, которые могут быть выброшены из-за исторического реализация Thread.stop () , продолжая управлять соблюдать надлежащую гигиену монитора.

1f 21c check-cast vAA, тип @ BBBB A: регистр опорного значения (8 бит)
B: индекс типа (16 бит)
Выбрасывать ClassCastException , если ссылка в данный регистр не может быть приведен к указанному типу.

Примечание: Начиная с , всегда должен быть ссылкой (а не примитивное значение), это обязательно завершится ошибкой во время выполнения (то есть вызовет исключение), если B относится к примитивный тип.

20 22c экземпляр vA, vB, тип @CCС A: регистр назначения (4 бита)
B: регистр опорного значения (4 бита)
C: индекс типа (16 бит)
Сохранить в заданном регистре назначения 1 если указанная ссылка является экземпляром данного типа, или 0 , если нет.

Примечание: Поскольку B всегда должен быть ссылкой (а не примитивное значение), это всегда приведет к в 0 сохраняется, если C относится к примитиву тип.

21 12x длина массива vA, vB A: регистр назначения (4 бита)
B: регистр опорного массива (4 бита)
Сохранить в данном регистре назначения длину указанного массив, в записях
22 21c новый экземпляр vAA, тип @ BBBB A: регистр назначения (8 бит)
B: индекс типа
Создайте новый экземпляр указанного типа, сохраняя ссылка на него в пункте назначения.Тип должен относиться к класс без массива.
23 22c новый массив vA, vB, тип @ СССС A: регистр назначения (4 бита)
B: регистр размера
C: индекс типа
Создайте новый массив указанного типа и размера. Тип должен быть типом массива.
24 35c заполненный новый массив {vC, vD, vE, vF, vG}, тип @ BBBB A: размер массива и количество слов аргумента (4 бита)
B: индекс типа (16 бит)
C..G: регистров аргументов (по 4 бита)
Создайте массив заданного типа и размера, заполнив его поставляемое содержимое. Тип должен быть типом массива. Массив содержание должно состоять из одного слова (т. е. нет массивов long или double , но ссылка типы приемлемы). Построенный экземпляр сохраняется как «результат» так же, как вызов метода инструкции хранят свои результаты, поэтому созданный экземпляр должен быть помещенным в реестр с немедленным последующим объект-результат-перемещ. инструкция (если она должна использоваться).
25 3RC заполненный-новый-массив / диапазон {vCCCC .. vNNNN}, тип @ BBBB A: размер массива и количество слов аргумента (8 бит)
B: индекс типа (16 бит)
C: регистр первого аргумента (16 бит)
N = A + C - 1
Создайте массив заданного типа и размера, заполнив его поставляемое содержимое. Разъяснения и ограничения такие же как fill-new-array , описанный выше.
26 31т fill-array-data vAA, + BBBBBBBB (с дополнительными данными, как указано ниже в « fill-array-data-payload Format») A: ссылка на массив (8 бит)
B: знаковое смещение «ветвления» псевдо-инструкции табличных данных (32 бит)
Заполните данный массив указанными данными. Ссылка должна быть в массив примитивов, и таблица данных должна соответствовать ему по типу и должен содержать не больше элементов, чем поместится в массиве.Это, массив может быть больше таблицы, и если да, то только начальный элементы массива устанавливаются, остальное остается в покое.
27 11x бросок vAA A: регистр, несущий исключение (8 бит)
Бросить указанное исключение.
28 10 т перейти + AA A: смещение перехода со знаком (8 бит) Безоговорочный переход к указанной инструкции.

Примечание: Смещение ветви не должно быть 0 . (Спин петля может быть законно построена либо с помощью goto / 32 , либо включив nop в качестве цели перед филиалом.)

29 20 т перейти / 16 + AAAA A: смещение перехода со знаком (16 бит)
Безоговорочный переход к указанной инструкции.

Примечание: Смещение ветви не должно быть 0 .(Спин петля может быть законно построена либо с помощью goto / 32 , либо включив nop в качестве цели перед филиалом.)

2a 30t перейти / 32 + AAAAAAAA A: смещение перехода со знаком (32 бита)
Безоговорочный переход к указанной инструкции.
2б 31т упакованный коммутатор vAA, + BBBBBBBB (с дополнительными данными как указанный ниже в « формат упакованной-коммутационной-полезной нагрузки «) A: регистр для тестирования
B: подписанное смещение «ветвления» псевдо-инструкции табличных данных (32 бит)
Перейти к новой инструкции на основе значения в заданный регистр, используя таблицу смещений, соответствующих каждому значению в конкретном интегральном диапазоне или перейти к следующему инструкция, если совпадения нет.
2c 31t sparse-switch vAA, + BBBBBBBB (с дополнительными данными как указано ниже в « sparse-switch-payload Format») A: регистр для тестирования
B: подписанное смещение «ветвления» псевдо-инструкции табличных данных (32 бит)
Перейти к новой инструкции на основе значения в данном зарегистрироваться, используя упорядоченную таблицу пар значение-смещение, или переход к следующей инструкции, если совпадений нет.
2d..31 23x cmp kind vAA, vBB, vCC
2d: cmpl-float (lt bias)
2e: cmpg-float (gt bias)
2f: cmpl-double (lt bias)
30: cmpg -double (gt bias)
31: cmp-long
A: регистр назначения (8 бит)
B: первый регистр источника или пара
C: второй регистр источника или пара
Выполните указанное сравнение с плавающей запятой или long , установка a на 0 если b == c , 1 если b> c , или -1 , если b ."Смещение", указанное для операций с плавающей запятой указывает, как обрабатываются сравнения NaN : "gt bias" инструкции возвращают 1 для сравнений NaN , и инструкции "lt bias" возвращают -1 .

Например, чтобы проверить, есть ли числа с плавающей запятой x рекомендуется использовать cmpg-float ; результат -1 означает, что тест был верным, а другие значения указывают на то, что он был ложным из-за правильного сравнения или из-за того, что одно из значений было NaN .

32..37 22т if- test vA, vB, +CCCC
32: if-eq
33: if-ne
34: if-lt
35: if-ge
36: if-gt
37: if-le
A: первый регистр для проверки (4 бита)
B: второй регистр для проверки (4 бита)
C: смещение перехода со знаком (16 бит)
Переход к указанному месту назначения, если значения данных двух регистров сравните как указано.

Примечание: Смещение ветви не должно быть 0 .(Спин петля может быть законно построена либо путем разветвления вокруг назад goto или включив nop как мишень перед веткой.)

38..3d 21t if- test z vAA, + BBBB
38: if-eqz
39: if-nez
3a: if-ltz
3b: if-gez
3c: if-gtz
3d: if-lez
A: регистр для проверки (8 бит)
B: смещение перехода со знаком (16 бит)
Переход к указанному месту назначения, если значение данного регистра сравнивается с 0, как указано.

Примечание: Смещение ветви не должно быть 0 . (Спин петля может быть законно построена либо путем разветвления вокруг назад goto или включив nop как мишень перед веткой.)

3e..43 10x (не используется) (не используется)
44..51 23x arrayop vAA, vBB, vCC
44: aget
45: aget-wide
46: aget-object
47: aget-boolean
48: aget-byte
49: aget-char
4a: aget-short
4b: aput
4c: aput-wide
4d: aput-object
4e: aput-boolean
4f: aput-byte
50: aput-char
51: aput-short
A: регистр значений или пара; может быть источником или местом назначения (8 бит)
B: регистр массива (8 бит)
C: индексный регистр (8 бит)
Выполнить операцию с идентифицированным массивом по указанному индексу данный массив, загружаемый или сохраняемый в регистр значений.
52..5f 22c i instanceop vA, vB, field @ CCCC
52: ​​iget
53: iget-wide
54: iget-object
55: iget-boolean
56: iget-byte
57: iget-char
58: iget -short
59: iput
5a: iput-wide
5b: iput-object
5c: iput-boolean
5d: iput-byte
5e: iput-char
5f: iput-short
A: регистр значений или пара; может быть источником или местом назначения (4 бита)
B: регистр объекта (4 бита)
C: индекс ссылки поля экземпляра (16 бит)
Выполнить операцию с полем экземпляра идентифицированного объекта с идентифицированное поле, загружающееся или сохраняемое в регистр значений.

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

60..6d 21c s staticop vAA, field @ BBBB
60: sget
61: sget-wide
62: sget-object
63: sget-boolean
64: sget-byte
65: sget-char
66: sget-short
67: sput
68: sput-wide
69: sput-object
6a: sput-boolean
6b: sput-byte
6c: sput-char
6d: sput-short
A: регистр значений или пара; может быть источником или местом назначения (8 бит)
B: статический индекс ссылки поля (16 бит)
Выполнить операцию статического поля идентифицированного объекта с идентифицированным статическое поле, загружающееся или сохраняемое в регистр значений.

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

6e..72 35c invoke- kind {vC, vD, vE, vF, vG}, meth @ BBBB
6e: invoke-virtual
6f: invoke-super
70: invoke-direct
71: invoke-static
72: invoke- интерфейс
A: количество слов аргумента (4 бита)
B: указатель ссылки на метод (16 бит)
C..G: регистров аргументов (по 4 бита)
Вызовите указанный метод. Результат (если есть) можно сохранить с соответствующим move-result * вариант в качестве немедленного последующая инструкция.

invoke-virtual используется для вызова обычного виртуального метод (метод, который не является частным , статическим , или final , и тоже не конструктор).

Когда method_id ссылается на метод без интерфейса class, invoke-super используется для вызова ближайшего суперкласса виртуальный метод (в отличие от метода с тем же method_id в вызывающем классе).Имеются те же ограничения на метод, что и для виртуальный вызов .

В файлах Dex версии 037 или новее, если method_id относится к методу интерфейса, invoke-super используется для вызова наиболее конкретных, непереопределенная версия этого метода, определенная в этом интерфейсе. Тоже самое ограничения метода сохраняются, как для invoke-virtual . В файлах Dex до версии 037 , имеющей интерфейс method_id является недопустимым и неопределенным.

invoke-direct используется для вызова статического , отличного от прямой метод (то есть метод экземпляра, который по своей природе непереопределяемый, а именно либо частный метод экземпляра , либо конструктор).

invoke-static используется для вызова статического метод (который всегда считается прямым методом).

invoke-interface используется для вызова интерфейс метод, то есть на объекте, чей конкретный класс не известен, используется method_id , который относится к интерфейс .

Примечание: Эти коды операций являются подходящими кандидатами для статического связывания, изменение аргумента метода, чтобы он был более прямым смещением (или их пара).

73 10x (не используется) (не используется)
74..78 3rc invoke- kind / range {vCCCC .. vNNNN}, meth @ BBBB
74: invoke-virtual / range
75: invoke-super / range
76: invoke-direct / range
77: invoke-static / range
78: интерфейс вызова / диапазон
A: количество слов аргумента (8 бит)
B: индекс ссылки на метод (16 бит)
C: регистр первого аргумента (16 бит)
N = A + C - 1
Вызовите указанный метод.См. Первый вызов - вид описание выше для получения подробной информации, предостережений и предложений.
79..7a 10x (не используется) (не используется)
7b..8f 12x unop vA, vB
7b: neg-int
7c: not-int
7d: neg-long
7e: not-long
7f: neg-float
80: neg-double
81: int-to- long
82: int-to-float
83: int-to-double
84: long-to-int
85: long-to-float
86: long-to-double
87: float-to-int
88: float-to-long
89: float-to-double
8a: double-to-int
8b: double-to-long
8c: double-to-float
8d: int-to-byte
8e: int-to-char
8f: int-to-short
A: регистр назначения или пара (4 бита)
B: регистр источника или пара (4 бита)
Выполнить идентифицированную унарную операцию с исходным регистром, сохранение результата в регистре назначения.
90..af 23x binop vAA, vBB, vCC
90: add-int
91: sub-int
92: mul-int
93: div-int
94: rem-int
95: and-int
96: or- int
97: xor-int
98: shl-int
99: shr-int
9a: ushr-int
9b: add-long
9c: sub-long
9d: mul-long
9e: div-long
9f: rem-long
a0: and-long
a1: or-long
a2: xor-long
a3: shl-long
a4: shr-long
a5: ushr-long
a6: add-float
a7: sub-float
a8: mul-float
a9: div-float
aa: rem-float
ab: add-double
ac: sub-double
ad: mul-double
ae: div-double
af: rem- двойной
A: регистр назначения или пара (8 бит)
B: первый исходный регистр или пара (8 бит)
C: второй исходный регистр или пара (8 бит)
Выполнить идентифицированную двоичную операцию с двумя исходными регистрами, сохранение результата в регистре назначения.

Примечание: В отличие от других -длинных математических операций (которые возьмите пары регистров как для их первого, так и для второго источника), shl-long , shr-long и ushr-long возьмите регистровую пару в качестве первого источника (значение, которое нужно сдвинуть), но один регистр для их второго источника (расстояние сдвига).

b0..cf 12x binop / 2addr vA, vB
b0: add-int / 2addr
b1: sub-int / 2addr
b2: mul-int / 2addr
b3: div-int / 2addr
b4: rem-int / 2addr
b5: and-int / 2addr
b6: or-int / 2addr
b7: xor-int / 2addr
b8: shl-int / 2addr
b9: shr-int / 2addr
ba: ushr-int / 2addr
bb: add-long / 2addr
bc: sub-long / 2addr
bd: mul-long / 2addr
be: div-long / 2addr
bf: rem-long / 2addr
c0: and-long / 2addr
c1: or- long / 2addr
c2: xor-long / 2addr
c3: shl-long / 2addr
c4: shr-long / 2addr
c5: ushr-long / 2addr
c6: add-float / 2addr
c7: sub-float / 2addr
c8: mul-float / 2addr
c9: div-float / 2addr
ca: rem-float / 2addr
cb: add-double / 2addr
cc: sub-double / 2addr
cd: mul-double / 2addr
ce: div-double / 2addr
cf: rem-double / 2addr
A: адресат и первый исходный регистр или пара (4 бита)
B: второй исходный регистр или пара (4 бита)
Выполнить идентифицированную двоичную операцию с двумя исходными регистрами, сохранение результата в первом исходном регистре.

Примечание: В отличие от других математических операций -long / 2addr (которые принимают пары регистров как для их назначения / первого источника, так и для их второй источник), shl-long / 2addr , shr-long / 2addr и ushr-long / 2addr принимают регистровая пара для их назначения / первого источника (значение, которое будет сдвинуты), но один регистр для их второго источника (сдвиг расстояние).

d0..d7 22s binop / lit16 vA, vB, # + CCCC
d0: add-int / lit16
d1: rsub-int (обратное вычитание)
d2: mul-int / lit16
d3: div-int / lit16
d4: rem-int / lit16
d5: and-int / lit16
d6: or-int / lit16
d7: xor-int / lit16
A: регистр назначения (4 бита)
B: регистр источника (4 бита)
C: константа int со знаком (16 бит)
Выполнить указанную двоичную операцию в указанном регистре (первый аргумент) и буквальное значение (второй аргумент), сохраняя результат в регистр назначения.

Примечание: rsub-int не имеет суффикса, так как эта версия является основной код операции его семейства. Также см. Ниже подробные сведения о его семантике.

d8..e2 22b binop / lit8 vAA, vBB, # + CC
d8: add-int / lit8
d9: rsub-int / lit8
da: mul-int / lit8
db: div-int / lit8
dc: rem- int / lit8
dd: and-int / lit8
de: or-int / lit8
df: xor-int / lit8
e0: shl-int / lit8
e1: shr-int / lit8
e2: ushr-int / lit8
A: регистр назначения (8 бит)
B: регистр источника (8 бит)
C: константа int со знаком (8 бит)
Выполнить указанную двоичную операцию в указанном регистре (первый аргумент) и буквальное значение (второй аргумент), сохраняя результат в регистре назначения.

Примечание: См. Ниже подробные сведения о семантике rsub-int .

e3..f9 10x (не используется) (не используется)
fa 45cc invoke-полиморфный {vC, vD, vE, vF, vG}, meth @ BBBB, proto @ HHHH A: количество слов аргумента (4 бита)
B: указатель ссылки на метод (16 бит)
C: приемник (4 бита)
D..G: регистров аргументов (по 4 бита)
H: ссылочный индекс прототипа (16 бит)
Вызвать указанный сигнатурный полиморфный метод. Результат (если есть) можно сохранить с соответствующим move-result * вариант в качестве немедленного последующая инструкция.

Ссылка на метод должна указывать на полиморфный метод сигнатуры, например java.lang.invoke.MethodHandle.invoke или java.lang.invoke.MethodHandle.invokeExact .

Получателем должен быть объект, поддерживающий полиморфную подпись. вызываемый метод.

Ссылка на прототип описывает предоставленные типы аргументов. и ожидаемый тип возврата.

Байт-код вызова-полиморфного кода может вызывать исключения, когда он выполняет. Исключения описаны в документации API. для вызываемого полиморфного метода сигнатуры.

Присутствует в файлах Dex, начиная с версии 038 .

фб 4rcc invoke-polymorphic / range {vCCCC .. vNNNN}, meth @ BBBB, proto @ HHHH A: количество слов аргумента (8 бит)
B: ссылочный индекс метода (16 бит)
C: приемник (16 бит)
H: ссылочный индекс прототипа (16 бит)
N = A + С - 1
Вызов указанного дескриптора метода. Смотрите invoke-polymorphic описание выше для подробностей.

Присутствует в файлах Dex, начиная с версии 038 .

FC 35C invoke-custom {vC, vD, vE, vF, vG}, call_site @ BBBB A: количество слов аргумента (4 бита)
B: индекс ссылки сайта вызова (16 бит)
C..G: регистров аргумента (по 4 бита)
Разрешает и вызывает указанный сайт вызова. Результат вызова (если есть) может быть сохранен с соответствующий move-result * вариант как немедленный последующая инструкция.

Эта инструкция выполняется в два этапа: вызов сайта разрешение и вызов сайта.

Разрешение вызова сайта проверяет, сайт вызова имеет связанный экземпляр java.lang.invoke.CallSite . В противном случае метод компоновщика начальной загрузки для указанного сайта вызова вызывается с использованием аргументов, имеющихся в файле DEX (см. call_site_item). В метод компоновщика начальной загрузки возвращает экземпляр java.lang.invoke.CallSite , который затем быть связанным с указанным местом вызова, если нет связи существуют.Другой поток, возможно, уже создал ассоциацию первым, и если это так, выполнение инструкции продолжается с первый связанный экземпляр java.lang.invoke.CallSite .

Вызов сайта вызова осуществляется на java.lang.invoke.MethodHandle цель разрешенного экземпляр java.lang.invoke.CallSite . Цель вызывается как при выполнении invoke-polymorphic (описанном выше) с использованием дескриптор метода и аргументы команды invoke-custom как аргументы для точного вызова дескриптора метода.

Исключения, вызванные методом компоновщика начальной загрузки, обертываются в java.lang.BootstrapMethodError . А BootstrapMethodError также возникает, если:

  • метод компоновщика начальной загрузки не возвращает экземпляр java.lang.invoke.CallSite .
  • возвращенный java.lang.invoke.CallSite имеет null целевой дескриптор метода.
  • целевой дескриптор метода не относится к запрошенному типу.
Присутствует в файлах Dex, начиная с версии 038 .
fd 3rc invoke-custom / range {vCCCC .. vNNNN}, call_site @ BBBB A: количество слов аргумента (8 бит)
B: индекс ссылки сайта вызова (16 бит)
C: регистр первого аргумента (16 бит)
N = A + C - 1
Разрешите и вызовите сайт вызова. Смотрите invoke-custom описание выше для подробностей.

Присутствует в файлах Dex, начиная с версии 038 .

fe 21c константный дескриптор метода vAA, method_handle @ BBBB A: регистр назначения (8 бит)
B: индекс дескриптора метода (16 бит)
Переместите ссылку на дескриптор метода, заданный данным индексом, в указанный регистр.

Присутствует в файлах Dex, начиная с версии 039 .

ff 21c const-method-type vAA, proto @ BBBB A: регистр назначения (8 бит)
B: ссылка на прототип метода (16 бит)
Переместите ссылку на прототип метода, заданный указанным индексом, в указанный регистр.

Присутствует в файлах Dex, начиная с версии 039 .

начальное образование - Как учить двоичных чисел 5-классникам?

Забытый аспект обучения двоичному кодированию - это вопрос о том, как его произносить. Я разберусь с этим вопросом.

В информатике часто имеет смысл произносить двоичные числа как телефонные; просто набор цифр. Но в математическом классе учитываются количества, и сравнение со счетом по основанию десяти и арифметикой является неявным, если не явным.Текущие системы произношения для двоичного кода неадекватны. Вот почему двоичные числа при обучении новичков, например пятиклассников, следует произносить аналогично тому, как учитель произносит десятичные числа при счете и арифметике, а не аналогично тому, как учитель произносит номер телефона.

Давайте рассмотрим четырнадцать в качестве примера.

Четырнадцать, при преобразовании нашей повседневной десятичной системы в двоичное число записывается как «1110».Иногда добавляется подстрочный индекс «два» или «2», превращая его в «1110two» или «1110₂». Обратите внимание, что это лучший вариант, который Medium.com может сделать для отображения нижнего индекса «два» или «2». Я буду использовать «1110two» как более безопасный и менее двусмысленный формат.

Большинство учителей математики произносят 1110two «один, один, один, по основанию два», или «один, один, один, ноль, по основанию два», или, если контекст делает это однозначным, просто «один, один, один, ой», или «один, один, один ноль». Это работает, но не идеально, потому что вы просто считываете цифры.Это все равно, что произносить «27» как «две семь», а не «двадцать семь». Или произнесение 7² как «семь надстрочных знаков два», а не «семь в квадрате». Или произнесение французского «chat» (которое по-французски произносится примерно как «shah» и означает «кошка» - мяукающее животное) как «see aitch ay tee».

Не многие учителя математики, слава богу, произносят 14 ÷ 2 как «один четыре, разделенный на два». Но при обучении двоичной арифметике учитель, вероятно, назвал бы ту же задачу 1110two ÷ 10two как «один, один, один ноль, разделенный на один ноль».Кажется, это очень жаль. Причиной этого может быть отсутствие известного способа произношения двоичных чисел, аналогичного тому, как мы произносим десятичные числа при арифметических операциях или счете.

Я говорю «при выполнении арифметических операций или подсчета», потому что, когда число представляет собой просто номер телефона или другой код или данные, и, следовательно, не число, которое представляет количество, и не число, величину которого необходимо понять, и не число, которое будет использоваться в любых вычислениях, тогда будет хорошо и очень эффективно произносить строку цифр.

Вероятно, вы могли бы найти учителя математики, который «произносит» 1110two как «четырнадцать». Это тоже работает, но не идеально, потому что это не столько определение двоичного числа, сколько вычисление десятичного представления и его произнесение. Это все равно, что «произносить» 7² как «сорок девять» или «произносить« французский »chat» как «cat», при этом вычисляется, что такое 7², и произносится это, а также переводится французское «chat» на английский «cat» и произнося это.

Возможно, половина всех людей, которые имеют мнение по этому поводу, если в Интернете появятся сайты с «ответами», думают, что 1110two следует произносить как «одна тысяча сто десять по основанию два».Это ужасный метод, потому что таким образом вы никогда не сможете безопасно сократить его до «одна тысяча сто десять» из-за опасности того, что он будет воспринят как знакомая тысяча сто десять (по основанию десять). Кроме того, всегда будет опасность, что вы будете иметь в виду 10001010110two, которое 1110ten преобразовано в двоичный формат. Невозможно заставить слушателя понять, что вы не имеете в виду последнее, как бы вы это ни выражали. Скажете ли вы «одна тысяча сто на / написано на / читается как / с основанием два», никогда не будет ясно, что вы не имеете в виду 10001010110two.Это все равно, что произносить французское «chat» как английское «chat» (как «chit-chat»).

Если вы продемонстрируете или научите счету, арифметике и измерению в двоичном формате, произнося числа, такие как телефонные номера, у вас будет ложное сравнение с десятичным, если вы не произнесете десятичные числа таким же образом.

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

Если вы продемонстрируете или научите счету, арифметике и измерению в двоичном формате, произнося числа, такие как телефонные номера, у вас будет ложное сравнение с десятичным, если вы не произнесете десятичные числа таким же образом.

У ученика мало шансов оценить всю красоту и мощь двоичного кода, когда все числа сведены к цепочкам цифр, произносимых как двоичные телефонные числа. А с десятичным счетом с использованием нормального хорошего десятичного произношения по сравнению с двоичным счетом с использованием простого произнесения цифр, студент не может провести точное или просвещенное сравнение между двумя основами.Счет вслух в двоичном формате с использованием моей системы произношения.

Попробуйте сосчитать от одного до шестнадцати в двоичном формате, произнося двоичные числа примерно так же, как если бы вы это делали в десятичном исчислении:

1два, произносится как «один». Обратите внимание, что 1two аналогичен 1ten, потому что каждое из них является наименьшим числом и наименьшей цифрой в его основании, но также и 9ten, поскольку каждое из них является самым большим однозначным числом и наибольшим числом в его основе.

10два, произносится как «два».Обратите внимание, что 10two аналогично 10ten, потому что каждое из них является наименьшим двузначным числом.

11два, произносится как «два один». Обратите внимание, что 11two аналогично 11ten, потому что оно на единицу больше 10two, но также и 19ten, потому что каждое из них является наибольшим двузначным числом, которое начинается с «1», а также до 99ten, поскольку каждое из них является наибольшим двузначным числом.

100два, произносится как «четыре». Обратите внимание, что 100two аналогично 100ten, поскольку каждое из них является наименьшим трехзначным числом, но также аналогично 900ten, поскольку каждое из них является наибольшим трехзначным числом, которое заканчивается на «00».

101два, произносится как «четыре, один». Обратите внимание, что 101two аналогичен 101ten, потому что каждое из них на единицу больше наименьшего трехзначного числа в его основе. Это не единственная аналогия.

110 два, произносится как «четыре два».

‘111two, произносится как« четыре, два, один ». Обратите внимание, что 111two аналогично 999ten, потому что каждое из них является наибольшим трехзначным числом в своей основе.

1001два, произносится как «восемь один».

1010 два, произносится как «восемь два».

1011 два, произносится как «восемь два один».

1100два, произносится как «восемь четыре».

1101 два, произносится как «восемь четыре один».

1110 два, произносится как «восемь четыре два».

1111 два, произносится как «восемь, четыре, два, один».

10000 два, произносится… что? «Шестнадцать» может показаться логически подразумеваемым именем. Но «шестнадцать» - это десятичное число. Это сокращение от «шесть и десять». Это сбивает с толку. И будет хуже, когда мы перейдем к большему количеству. «Тридцать два» («три десятка и два»), «шестьдесят четыре» («шесть десятков и четыре») и «сто двадцать восемь» (десять десятков, две десятки и восемь) и т. Д. все длиннее и длиннее, все сложнее и запутаннее, и все более очевидно, что это десятичные числа.

Решение состоит в том, чтобы найти короткие, легко произносимые и легко запоминаемые имена, чтобы заменить «шестнадцать» на 10000 два, «тридцать два» на 100000 два и так далее. Но нужно очень много имен, потому что двоичные числа такие длинные. Сравните 1000two с 8ten. Это четыре цифры по сравнению с одной. Так что эти имена должно быть очень легко вспомнить, потому что нужно так много имен, и никто не сможет выучить такое количество имен, если они не будут супер-простыми для изучения.

Легче всего вспомнить имена, которые можно вычислить по номеру.Таким образом, не нужно запоминать имена, нужно запоминать только способ вывести имя из числа.

Но пока, для простоты, я просто скажу вам, что мое новое имя для 10000two - ‘ri’, мое новое имя для 100000two - ‘li’, а мое новое имя для 1000000two - ‘shi’. 10000000two - это «ки». 100000000two - это «фи». 1000000000two - это «пи».

hex - Как справиться с "невозможным" инструкциями Chip-8

вы предполагаете, что каждая пара байтов в двоичном файле является инструкцией? это было бы плохим предположением.Когда вы следуете правилам чипов для точки входа и следуете возможным путям кода, появляется ли эта невозможная инструкция? наборы инструкций фиксированной или переменной длины, различные архитектуры (arm, mips, x86 и т. д.), вы найдете данные в двоичном файле, которые не являются инструкциями, это именно то, как это работает. дизассемблируя полноразмерную программу arm (32-битные инструкции фиксированной длины), вы найдете неопределенные инструкции, потому что они не являются инструкциями, это данные, адреса должны достигать больших расстояний, строки ascii и т. д.будучи фиксированной длиной, вы можете перейти от нуля до конца и выполнить дизассемблирование (при условии, что это фиксированная длина и там нет большого пальца), но вам просто нужно разрешить / игнорировать недопустимые битовые шаблоны. то же самое здесь, если это то, что вы попадаете. Это не всегда идеально, но чтобы попытаться устранить некоторые из них, вы должны следовать возможным путям выполнения (что вам в значительной степени нужно сделать для наборов инструкций переменной длины).

, если вы эмулируете, чтобы добраться до них и правильно эмулируете, то вы следуете путям выполнения.И мы, наверное, не сможем вам помочь. У вас правильный порядок байтов, правильно ли вы интерпретируете пары байтов? возможно, вам на время повезет, тогда вы попадете в undefined?

РЕДАКТИРОВАТЬ:

это все, что я получил с вашим двоичным кодом, поскольку он не описывает, что находится в 0x300s

  0000: 6A00
mov r10,0x00
0002: 6B04
mov r11,0x04
0004: 6C01
mov r12,0x01
0006: 6D00
mov r13,0x00
0008: 6E02
mov r14,0x02
000A: 2326
звоните 326
0326: 0000
НЕОПРЕДЕЛЕННЫЙ
  

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

Хорошо, я только что запустил симулятор chip8, и пока ваша программа не обнаруживает никаких неопределенностей. Он ждет нажатия клавиш и других вещей, которые я еще не декодировал.

вместо этого попробует дизассемблер.

РЕДАКТИРОВАТЬ2:

, поэтому я запустил дизассемблер, и он не попал по этим адресам, он заканчивается на

  034E: 0x7402 добавить v4,0x02
0350: 0xD341 drw v3, v4,1
0352: 0x00EE ret
  

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

Я думаю, что инструкция 0xBnnn - единственная, которая может вас сбить с толку, поскольку она зависит от данных во время выполнения, поэтому вам нужно подражать ей (со всеми возможными комбинациями, которые действительно могут произойти), чтобы увидеть, куда она может вас привести. В принципе, если вы столкнетесь с одним из них, вам в какой-то мере придется вручную изучить возможные места приземления и оттуда идти.

Я не нашел этого в этом коде.

Моя разборка, посмотри как она сравнивается с твоей:

  0200: 0x6A00 ld v10,0x00
0202: 0x6B04 ld v11,0x04
0204: 0x6C01 ld v12,0x01
0206: 0x6D00 ld v13,0x00
0208: 0x6E02 ld v14,0x02
020A: 0x2326 вызов 326
020C: 0x2320 вызов 320
020E: 0x6030 ld v0,0x30
0210: 0x6101 ld v1,0x01
0212: 0xF015 ld dt, v0
0214: 0xF007 ld v0, dt
0216: 0xF118 улица ld, v1
0218: 0x3000 se v0,0x00
021A: 0x1214 ип 214
021C: 0x2242 вызов 242
021E: 0x2320 вызов 320
0220: 0x7D01 добавить v13,0x01
0222: 0x2320 вызов 320
0224: 0x6008 ld v0,0x08
0226: 0xE0A1 sknp v0
0228: 0x230A вызов 30A
022A: 0x4A00 сн. V10,0x00
022C: 0x123E jp 23E
022E: 0xA362 ld i, 362
0230: 0xD891 drw v8, v9,1
0232: 0x7901 добавить v9,0x01
0234: 0xD891 drw v8, v9,1
0236: 0x4F01 СНН v15,0x01
0238: 0x12F4 jp 2F4
023A: 0x4918 СНН v9,0x18
023C: 0x12E4 jp 2E4
023E: 0x22B2 вызов 2B2
0240: 0x121E jp 21E
0242: 0x4C01 СНН v12,0x01
0244: 0x226C вызов 26C
0246: 0x4C02 sne v12,0x02
0248: 0x227A вызов 27A
024A: 0x4C03 sne v12,0x03
024C: 0x2288 звонок 288
024E: 0x4C04 сн. V12,0x04
0250: 0x2296 вызов 296
0252: 0x4C05 sne v12,0x05
0254: 0x22A4 вызов 2A4
0256: 0xA359 ld i, 359
0258: 0xD672 drw v6, v7,2
025A: 0x4400 sne v4,0x00
025C: 0x00EE ret
025E: 0xA357 ld i, 357
0260: 0xD452 drw v4, v5,2
0262: 0x4200 sne v2,0x00
0264: 0x00EE рет
0266: 0xA35B ld i, 35B
0268: 0xD232 drw v2, v3,2
026A: 0x00EE ret
026C: 0x6628 ld v6,0x28
026E: 0x6709 ld v7,0x09
0270: 0x6400 ld v4,0x00
0272: 0x6500 ld v5,0x00
0274: 0x6200 ld v2,0x00
0276: 0x6300 ld v3,0x00
0278: 0x00EE ret
027A: 0x6628 ld v6,0x28
027C: 0x670E ld v7,0x0E
027E: 0x6428 ld v4,0x28
0280: 0x6514 ld v5,0x14
0282: 0x6200 ld v2,0x00
0284: 0x6300 ld v3,0x00
0286: 0x00EE ret
0288: 0x6628 ld v6,0x28
028A: 0x6707 ld v7,0x07
028C: 0x6428 ld v4,0x28
028E: 0x650C ld v5,0x0C
0290: 0x6216 ld v2,0x16
0292: 0x6311 ld v3,0x11
0294: 0x00EE рет
0296: 0x6628 ld v6,0x28
0298: 0x6707 ld v7,0x07
029A: 0x6428 ld v4,0x28
029C: 0x650E ld v5,0x0E
029E: 0x6216 ld v2,0x16
02A0: 0x6314 ld v3,0x14
02A2: 0x00EE рет
02A4: 0x6628 ld v6,0x28
02A6: 0x6705 ld v7,0x05
02A8: 0x6428 ld v4,0x28
02AA: 0x6510 ld v5,0x10
02AC: 0x6216 ld v2,0x16
02AE: 0x630B ld v3,0x0B
02B0: 0x00EE рет
02B2: 0xA359 ld i, 359
02B4: 0xD672 drw v6, v7,2
02B6: 0x76FE добавить v6,0xFE
02B8: 0xD672 drw v6, v7,2
02BA: 0x4400 СНН v4,0x00
02BC: 0x00EE ret
02BE: 0xA357 ld i, 357
02C0: 0xD452 drw v4, v5,2
02C2: 0x7402 добавить v4,0x02
02C4: 0x4444 СНН v4,0x44
02C6: 0x74C0 добавить v4,0xC0
02C8: 0xD452 drw v4, v5,2
02CA: 0x4200 sne v2,0x00
02CC: 0x00EE ret
02CE: 0xA35B ld i, 35B
02D0: 0xD232 drw v2, v3,2
02D2: 0x7202 добавить v2,0x02
02D4: 0x4C04 сн. V12,0x04
02D6: 0x7202 добавить v2,0x02
02D8: 0x4C05 сн. V12,0x05
02DA: 0x7202 добавить v2,0x02
02DC: 0x4244 sne v2,0x44
02DE: 0x72C0 добавить v2,0xC0
02E0: 0xD232 drw v2, v3,2
02E2: 0x00EE ret
02E4: 0x7C01 добавить v12,0x01
02E6: 0x6D00 ld v13,0x00
02E8: 0x6E02 ld v14,0x02
02EA: 0x00E0 cls
02EC: 0x4C06 СНН v12,0x06
02EE: 0x6C01 ld v12,0x01
02F0: 0x6A00 ld v10,0x00
02F2: 0x120A jp 20A
02F4: 0x6006 ld v0,0x06
02F6: 0xF018 улица ld, v0
02F8: 0x7BFF добавить v11,0xFF
02FA: 0x4B00 sne v11,0x00
02FC: 0x1308 ип 308
02FE: 0x6D00 ld v13,0x00
0300: 0x6E02 ld v14,0x02
0302: 0x00E0 cls
0304: 0x6A00 ld v10,0x00
0306: 0x120A jp 20A
0308: 0x1308 ип 308
030A: 0x4A01 сн. V10,0x01
030C: 0x00EE ret
030E: 0x6002 ld v0,0x02
0310: 0xF018 улица ld, v0
0312: 0x6A01 ld v10,0x01
0314: 0x88D0 ld v8, v13
0316: 0x7801 добавить v8,0x01
0318: 0x89E0 ld v9, v14
031A: 0x7901 добавить v9,0x01
031C: 0xD891 drw v8, v9,1
031E: 0x00EE ret
0320: 0xA354 ld i, 354
0322: 0xDDE2 drw v13, v14,2
0324: 0x00EE ret
0326: 0x6419 ld v4,0x19
0328: 0x6300 ld v3,0x00
032A: 0xA356 ld i, 356
032C: 0xD341 drw v3, v4,1
032E: 0x7308 добавить v3,0x08
0330: 0x3340 se v3,0x40
0332: 0x132C jp 32C
0334: 0x631E ld v3,0x1E
0336: 0x641B ld v4,0x1B
0338: 0xFC29 ld f, v12
033A: 0xD345 drw v3, v4,5
033C: 0x4B04 sne v11,0x04
033E: 0xA35F ld i, 35F
0340: 0x4B03 sne v11,0x03
0342: 0xA360 ld i, 360
0344: 0x4B02 sne v11,0x02
0346: 0xA361 ld i, 361
0348: 0x4B01 sne v11,0x01
034A: 0xA362 ld i, 362
034C: 0x6301 ld v3,0x01
034E: 0x7402 добавить v4,0x02
0350: 0xD341 drw v3, v4,1
0352: 0x00EE ret
  

Существует ряд инструкций, которые загружают i с адресом в этом пространстве на 0x354 и после него, поэтому я предполагаю, что то, что вы обнаружите, - это данные, используемые программой, а не инструкции.а самый большой - 0x362. из данных, описанных вашим шестнадцатеричным дампом, самый большой адрес - 0x363, но это ноль и / или преднамеренное заполнение, или вам придется смотреть на код в отношении использования i.

  022E: 0xA362 ld i, 362
0256: 0xA359 ld i, 359
025E: 0xA357 ld i, 357
0266: 0xA35B ld i, 35B
02B2: 0xA359 ld i, 359
02BE: 0xA357 ld i, 357
02CE: 0xA35B ld i, 35B
0320: 0xA354 ld i, 354
032A: 0xA356 ld i, 356
033E: 0xA35F ld i, 35F
0342: 0xA360 ld i, 360
0346: 0xA361 ld i, 361
034A: 0xA362 ld i, 362
  
.

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *