Сервис и документация
Гарантийные обязательства:
- Гарантийный срок изделия составляет 18 месяцев со дня продажи или 1000 моточасов для воздушных отопителей и 500 моточасов для жидкостных подогревателей или пробег автомобиля с установленным изделием составил не более 50000 км.
- Установку изделия должны проводить организации, уполномоченные Производителем.
- Производитель гарантирует нормальную работу своей продукции при условии соблюдения потребителем всех правил предусмотренных в руководстве по эксплуатации завода — изготовителя.
Гарантийными случаями не являются:
- форс-мажорные обстоятельства: удар молнии, пожар, затопления, наводнения, недопустимые колебаний напряжения и ДТП;
- несоблюдения правил эксплуатации, хранения и транспортировки;
- неправильного монтажа, ремонта или обслуживания, если они проведены лицами и организациями, не уполномоченными Производителем на производство монтажа и гарантийного ремонта;
- отказа работы отопителя по причине загрязнения камеры сгорания;
- нарушения работы электрооборудования автомобиля;
- самостоятельного ремонта изделия или использования неоригинальных запасных частей.
При установке не в уполномоченным Производителем сервисном центре или самостоятельной установке для получения гарантии необходимо обратится в один из сервисный центров уполномоченных Производителем на производство монтажа и гарантийного ремонта для подтверждения правильности установки. При этом делается отметка в гарантийном талоне. (За данную услугу сервисный центр может взымать плату).
Техническая поддержка
Наша компания уделяет особое внимание повышению качества производимых изделий, развитию качественного предоставления услуг монтажа, сервисного и технического обслуживания.
Качество производимой продукции обеспечивается сертифицированной системой менеджмента качества, соответсвующей требованиям международных стандартов качества ISO 9001:2008, ISO/TS 16949:2009.
В наших изделиях используются уникальные запатентованные горелочные устройства собственной разработки, адаптированные под российское топливо и суровые условия эксплуатации до -45 градусов Цельсия.
Так же немаловажным фактором является наличие обширной дилерской сети по всей России, ближнего и дальнего зарубежья. Вся наша дилерская сеть осуществляет полный спектр услуг по продажам, монтажу, гарантийному и послегарантийному обслуживанию.
Все дилерские центры имеют необходимое оборудование для восстановления и проверки работоспособности изделия в максимально короткий срок.
Мы ценим каждого потребителя, и нам важно Ваше мнение о качестве продукции, которой Вы пользуетесь.
Наши квалифицированные специалисты готовы оказать любую техническую поддержку по любому изделию.
ICQ 275085154
Телефон: (846)2070520 ( только по техническим вопросам)
E-mail: [email protected]
Обучение и сертификация
Предприятия, желающие заниматься установкой подогревателей «Теплостар», «Бинар» или воздушных отопителей «Планар», должны пройти обучение и получить свидетельство на право проведения гарантийных работ. Для этого необходимо прислать заявку на обучение в ООО «Сервисная компания». Обучение может проводиться в Самаре (обучение бесплатное), либо по месту нахождения сертифицируемого предприятия (в этом случае командировочные расходы берет на себя заказчик). ООО «Сервисная компания» проводит предварительный прием заявок на обучение и сертификацию на 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Д-Компакт – на дизельном топливе.
Подогреватели имеют вывод для подсоединения к сигнализации автомобиля или для установки модема и комплектуются электронасосом «Bosch», если работают на бензине.
Подогреватель представляет собой автономное устройство и выполняет следующие функции:
- Разогрев двигателя при низких температурах для надежного запуска;
- Дополнительный подогрев двигателя и салона при работающем двигателе в условиях сильных морозов;
- Подогрев салона и лобового стекла при низких минусовых температурах (для удаления обледенения) при неработающем двигателе;
- Работа помпы при неработающем подогревателе.
Эти функции реализуются при установке базового комплекта подогревателя, к которому можно подключать устройства, реализующие дополнительные возможности.
Особенности подогревателей Бинар 5Б-Компакт и Бинар 5Д-Компакт
Подогреватели Бинар 5Б-Компакт и Бинар 5Д-Компакт управляются пультом управления с таймером, установленным на панели автомобиля.
Так же управлять подогревателями Бинар можно пультом управления или дистанционно, с помощью GSM модема, отправляя SMS сообщения по сотовому телефону.
Если в автомобиле установлена система дистанционной сигнализации, то для управления подогревателями Бинар можно использовать ее свободный канал.
Пульт управления с таймером позволяет запрограммировать запуск подогревателя в назначенное время, а при работе выводит на индикатор значение температуры охлаждающей жидкости и режим работы. В случае возникновения неисправности на индикаторе пульта отображается ее номер.
Конструкция и функциональные возможности подогревателей постоянно совершенствуются.
Описание устройства и работы подогревателя
Подогреватель работает независимо от автомобильного двигателя. Питание подогревателя топливом и электроэнергией осуществляется от автотранспортного средства.
Подогреватель является автономным нагревательным устройством, которое содержит:
- нагреватель;
- нагнетатель воздуха для подачи воздуха в камеру горения нагревателя;
- топливный насос для подачи топлива в камеру сгорания;
- циркуляционный насос (помпа) для принудительной прокачки рабочей жидкости системы охлаждения (тосола) через теплообменные системы нагревателя и двигателя автомобиля;
- блок управления (входит в состав нагревателя), осуществляющий управление вышеперечисленными устройствами;
- пульт управления с таймером для автоматического или ручного запуска подогревателя;
- жгуты проводов для соединения элементов подогревателя и для соединения с аккумуляторной батареей и отопителем салона автомобиля.
- Подогреватель своим гидравлическим контуром встраивается в систему охлаждения двигателя таким образом, чтобы его помпа обеспечивала циркуляцию охлаждающую жидкости в двигателе и нагревателе
Технические характеристики подогревателя
БИНАР-5 КОМПАКТ GP | МОДЕЛЬ | ||
---|---|---|---|
ТЕХНИЧЕСКИЕ ХАРАКТЕРИСТИКИ | БИНАР 5Б-КОМПАКТ | БИНАР 5Д-КОМПАКТ | |
Номинальное напряжение питания, В | 12 | ||
Расход топлива, л/ч | 0,7 | 0,6 | |
Теплопроизводительность, кВт | 5 | ||
Допустимое отклонение напряжение питания от номинала, В | 9,5. | ||
Потребляемая мощность вместе с помпой, Вт | 45 | ||
Теплоноситель | Охлаждающая жидкость по ГОСТ 28084 | ||
Применяемое топливо | бензин по ГОСТ Р 51105 | Дизельное топливо по ГОСТ 305 | |
Органы управления | штатно – пульт*, дополнительно -сигнализация** | ||
Режим запуска и остановки | Ручной, автоматический | ||
Масса со всеми комплектующими, кг не более | 8 | ||
* – пульт – таймер присутствует во всех комплектациях. | |||
Габариты упаковки, см | 450 х 260 х 220 |
Дополнительные функции отопителя Бинар 5
Модульная структура подогревателя двигателя Бинар 5 позволяет подключать устройства, реализующие дополнительные функции. В том числе после приобретения и установки базового комплекта. Подключение минитаймера позволит программировать время запуска предпускового подогревателя или при помощи других дополнительных устройств отправлять команду запуска отопителя с помощью SMS сообщения или звонка с мобильного телефона.
Номер ошибки | Описание неисправности | Причины и рекомендуемые методы устранения неисправности | |
01 | Перегрев (по температуре)* | Температура в зоне одного из датчиков более 120ºС.![]() |
Проверить полностью жидкостный контурна наличие воздушных пробок.> Проверить помпу. Проверить датчик температуры и датчик перегрева. Проверить качество тосола, который должен применяться в зависимости от температуры окружающей среды. |
02 | Возможный перегрев (по разнице температур) | Проверить полностью жидкостный контур на наличие воздушных пробок. Проверить помпу.. Проверить датчик температуры и датчик перегрева. Проверить качество тосола, который должен применяться в зависимости от температуры окружающей среды. |
|
03-04 | Неисправность датчика температуры N1-N2 | Короткое замыкание или обрыв проводников.![]() |
Заменить сборку датчиков (поддаются ремонту) |
05 | Неисправность индикатора пламени | Короткое замыкание на корпус или обрыв в электропроводке индикатора | Проверить индикатор пламени. Проверить соединительные провода. Проверить омическое сопротивление между контактами индикатора, которое должно быть не более 10 Ом. При неисправности индикатор пламени заменить. |
06 | Неисправность датчика температуры на блоке управления | Вышел из строя датчик температуры (находиться в блоке управления, замене не подлежит) | Заменить блок управления нагревателя |
07 | Прерывание пламени на режиме работы «МАЛЫЙ» | Проверить воздухозаборник, газоотводящий трубопровод и подачу топлива, устранить неисправности, при необходимости заменить топливный насос и индикатор пламени.![]() |
|
08 | Прерывание пламени на режиме работы «ПОЛНЫЙ» | Проверить воздухозаборник, газоотводящий трубопровод и подачу топлива, устранить неисправности, при необходимости заменить топливный насос и индикатор пламени. | |
09 | Неисправность свечи накаливания | Короткое замыкание, обрыв, неисправность блока управления. | Проверить свечу накаливания и блок управления |
10 | Неисправность нагнетателя воздуха. Обороты ниже номинала | Посторонние предметы (мусор) мешают вращению крыльчатки или крыльчатка задевает за крышку нагнетателя воздуха. | Проверить электропроводку.![]() |
11 | Перегрев | Скорость нагрева температурных датчиков высокая. | 1. Проверить полностью жидкостный контур (возможно образовалась воздушная пробка перед помпой и по этому охлаждающая жидкость не прокачивается через нагреватель). 2. Проверить состояние охлаждающей жидкости на предмет ее текучести при минусовых температурах. 3. Проверить помпу, при необходимости заменить. |
12 | Отключение, повышенное напряжение. | Напряжение питания выше 16В. | Проверить напряжение на разъеме ХS2 нагревателя. Проверить предохранители, аккумуляторную батарею, регулятор напряжения автомобиля и подводящую электропроводку |
13 | Попытки запуска исчерпаны | Розжиг не состоялся.![]() |
Проверить топливопровод, топливный насос и нагнетатель воздуха. Проверить выхлопную трубу. Проверить камеру сгорания, при необходимости почистить отверстие в свечном штуцере КС. |
14 | Неисправность помпы | Обрыв или короткое замыкание токоведущих частей. | Проверить электропровода циркуляционного насоса на короткое замыкание и обрыв, проверить помпу. Почистить насосную часть помпы. |
15 | Отключение, пониженное напряжение. | Напряжение питания менее 10В. | Проверить напряжение на разъеме ХS2 нагревателя. Проверить предохранители, аккумуляторную батарею, регулятор напряжения автомобиля и подводящую электропроводку. |
16 | Превышено время на вентиляцию | За время продувки недостаточно охлаждён датчик пламени.![]() |
Проверить воздухозаборник и газоотводящий трубопровод. Проверить индикатор пламени и при необходимости заменить. |
17 | Неисправность топливного насоса(короткое замыкание) | Короткое замыкание в электропроводке топливного насоса. | Проверить топливный насос |
20 | Нет связи между блоком управления и пультом | Короткое замыкание или обрыв в электропроводке от изделия к ПУ. | Проверить предохранитель 5 А. Проверить цепи и контакты |
21 | Прерывание пламени на режиме «ПРОГРЕВ» | Условия для поддержания горения плохие. Недостаток топлива или воздуха, закопчен теплообменник, засорена выхлопная труба | Проверить воздухозаборник, газоотводящий трубопровод и подачу топлива, устранить неисправности, при необходимости заменить топливный насос и индикатор пламени |
22 | Неисправность топливного насоса(обрыв) | Обрыв в электропроводке топливного насоса.![]() |
Проверить топливный насос |
24 | Резкое изменение температуры на одном из датчиков. | Возможный перегрев в зоне одного из датчиков температуры из-за слабой циркуляции охлаждающей жидкости. | Проверить полностью жидкостный контур на наличие воздушных пробок. Проверить помпу. Проверить датчик температуры и датчик перегрева. Проверить качество тосола, который должен применяться в зависимости от температуры окружающей среды. |
25 | Слишком быстрый нагрев охлаждающей жидкости | За 1 цикл работы подогреватель трижды достиг ждущего режима за время менее 6 мин. | Проверить полностью жидкостный контур на наличие воздушных пробок. Проверить помпу. Проверить датчик температуры и датчик перегрева.![]() |
26 | Перегружен мотор нагнетателя | Нагнетатель потребляет слишком большой ток. | Проверить свободный ход крыльчатки нагнетателя, убрать пыль и пр., убедиться в свободном вращении. |
27 | Неисправность нагнетателя воздуха. | Двигатель не вращается (возможно задевание) | Проверить НВ на наличие механических помех вращению.Проверить электропроводку, нагнетатель воздуха и блок управления. |
28 | Неисправность нагнетателя воздуха. | Двигатель вращается без управления (возможна неисправность 5В питания в блоке управления).![]() |
Проверить НВ на наличие механических помех вращению.Проверить электропроводку, нагнетатель воздуха и блок управления. |
29 | Исчерпаны попытки розжига во время работы подогревателя | Количество повторных розжигов больше 4-х. | Проверить топливную систему. Проверить затяжку хомутов на топливопроводе, герметичность топливопровод, герметичность щтуцера на топливном насосе, производительность топливного насоса |
30 | Срыв пламени в камере сгоранияв результате просадки напряжения | При снижении напряжения питания бортовой сети воздуходувка останавливается. | Проверить аккумуляторную батарею, электропроводку. (Просадка напряжения может возникнуть из-за длительного включения электростартера).![]() |
37 | Подогреватель заблокирован | Ошибка No13 повториласьтри раза подряд | Выяснить причину возникновения ошибки, устранить, сбросить ошибку. |
50 | Нет связи между пультом управления и модемом. | Короткое замыкание или обрыв в электропроводке. | Проверить предохранитель 5 А. Проверить цепи и контакты |
78 | Зафиксирован срыв пламени во время работы. | Ошибка информационная (не критическая). | Показывается для информации пользователя. Проверить затяжку хомутов на топливопроводе, герметичность топливопровода, герметичность штуцера на топливном насосе |
Бинар-5 Компакт | Модель | |
Технические характеристики | Бинар 5Б-Компакт | Бинар 5Д-Компакт |
Номинальное напряжение питания, В | 12 | |
Расход топлива, л/ч | 0,7 | 0,6 |
Теплопроизводительность, кВт | 5 | |
Допустимое отклонение напряжение питания от номинала, В |
9,5.![]() |
|
Потребляемая мощность вместе с помпой, Вт | 45 | |
Теплоноситель | Охлаждающая жидкость по ГОСТ 28084 | |
Применяемое топливо | бензин по ГОСТ Р 51105 | Дизельное топливо по ГОСТ 305 |
Органы управления | штатно — пульт*, дополнительно — сигнализация**, GSM модем** | |
Режим запуска и остановки | Ручной, автоматический | |
Масса со всеми комплектующими, кг не более | 9 | |
|
||
Габариты упаковки, см (Д х Ш х В) | 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
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
Три итерации цикла показаны ниже. Трассировка программы предоставляется читателю в качестве упражнения.
В первой итерации цикла 7DH добавляется к A с CY = 0 и R7 = 00,
и счетчик R2 = 04.Во второй итерации цикла EBH добавляется к A, в результате получается A –
68H и CY = 1. Поскольку произошел перенос, R7 увеличивается. Теперь счетчик
R2 = 03.На третьей итерации 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,
Если младший полубайт (4 бита) больше 9, или если AC = 1, добавьте 0110 к младшим
4 битам.
Если верхний полубайт больше 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 для чисел без знака следующим образом.
Возьмите дополнение до 2 вычитаемого (исходный операнд).
Добавьте его в список (A).
Инвертировать перенос.
Эти три шага выполняются для каждой команды 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».
Эта инструкция всегда делает CY = 0 и OV = 0, если знаменатель не равен 0.
Если знаменатель равен 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
00 10x | nop | Циклы отходов. Примечание: Псевдо-инструкции, несущие данные, помечены этим кодом операции, в котором
случае старший байт блока кода операции указывает на природу
данные. См. « | |
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 бита) | Перемещает содержимое одной пары регистров в другую. Примечание: Допускается переход с |
05 22x | по ширине / от 16 vAA, vBBBB | A: пара регистров назначения (8 бит) B: пара регистров источника (16 бит) | Перемещает содержимое одной пары регистров в другую. Примечание: Соображения по реализации такие же, как у |
06 32x | ходовой / 16 vAAAA, vBBBB | A: пара регистров назначения (16 бит) B: пара регистров источника (16 бит) | Перемещает содержимое одной пары регистров в другую. Примечание: Соображения по реализации такие же, как у |
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 бит) | Отпустите монитор для указанного объекта. Примечание: Если эта инструкция должна вызвать исключение, она должна сделать
так, как если бы компьютер уже продвинулся дальше инструкции.
Может быть полезно думать об этом как об успешной инструкции.
выполнение (в некотором смысле), и исключение выдается после инструкция, но до , следующая получает шанс
запустить. Это определение позволяет методу использовать
комплексный блок очистки монитора (например, |
1f 21c | check-cast vAA, тип @ BBBB | A: регистр опорного значения (8 бит) B: индекс типа (16 бит) | Выбрасывать ClassCastException , если ссылка в
данный регистр не может быть приведен к указанному типу. Примечание: Начиная с |
20 22c | экземпляр vA, vB, тип @CCС | A: регистр назначения (4 бита) B: регистр опорного значения (4 бита) C: индекс типа (16 бит) | Сохранить в заданном регистре назначения 1 если указанная ссылка является экземпляром данного типа,
или 0 , если нет. Примечание: Поскольку |
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 бит) | Безоговорочный переход к указанной инструкции. Примечание: Смещение ветви не должно быть |
29 20 т | перейти / 16 + AAAA | A: смещение перехода со знаком (16 бит) | Безоговорочный переход к указанной инструкции. Примечание: Смещение ветви не должно быть |
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 |
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 бит) | Переход к указанному месту назначения, если значения данных двух регистров
сравните как указано. Примечание: Смещение ветви не должно быть |
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, как указано. Примечание: Смещение ветви не должно быть |
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 * вариант в качестве немедленного
последующая инструкция. Когда В файлах Dex версии Примечание: Эти коды операций являются подходящими кандидатами для статического связывания, изменение аргумента метода, чтобы он был более прямым смещением (или их пара). |
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 бит) | Выполнить идентифицированную двоичную операцию с двумя исходными регистрами,
сохранение результата в регистре назначения. Примечание: В отличие от других |
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 бита) | Выполнить идентифицированную двоичную операцию с двумя исходными регистрами,
сохранение результата в первом исходном регистре. Примечание: В отличие от других математических операций |
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 бит) | Выполнить указанную двоичную операцию в указанном регистре (первый
аргумент) и буквальное значение (второй аргумент), сохраняя результат в
регистр назначения. Примечание: |
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 бит) | Выполнить указанную двоичную операцию в указанном регистре (первый
аргумент) и буквальное значение (второй аргумент), сохраняя результат
в регистре назначения. Примечание: См. Ниже подробные сведения о семантике |
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 * вариант в качестве немедленного
последующая инструкция. Ссылка на метод должна указывать на полиморфный метод сигнатуры, например Получателем должен быть объект, поддерживающий полиморфную подпись. вызываемый метод. Ссылка на прототип описывает предоставленные типы аргументов. и ожидаемый тип возврата. Байт-код вызова-полиморфного кода Присутствует в файлах Dex, начиная с версии |
фб 4rcc | invoke-polymorphic / range {vCCCC .. vNNNN}, meth @ BBBB, proto @ HHHH | A: количество слов аргумента (8 бит) B: ссылочный индекс метода (16 бит) C: приемник (16 бит) H: ссылочный индекс прототипа (16 бит) N = A + С - 1 | Вызов указанного дескриптора метода. Смотрите invoke-polymorphic описание выше для подробностей. Присутствует в файлах Dex, начиная с версии |
FC 35C | invoke-custom {vC, vD, vE, vF, vG}, call_site @ BBBB | A: количество слов аргумента (4 бита) B: индекс ссылки сайта вызова (16 бит) C..G: регистров аргумента (по 4 бита) | Разрешает и вызывает указанный сайт вызова.
Результат вызова (если есть) может быть сохранен с
соответствующий move-result * вариант как немедленный
последующая инструкция.Эта инструкция выполняется в два этапа: вызов сайта разрешение и вызов сайта. Разрешение вызова сайта проверяет,
сайт вызова имеет связанный экземпляр Вызов сайта вызова осуществляется на Исключения, вызванные методом компоновщика начальной загрузки, обертываются
в
038 . |
fd 3rc | invoke-custom / range {vCCCC .. vNNNN}, call_site @ BBBB | A: количество слов аргумента (8 бит) B: индекс ссылки сайта вызова (16 бит) C: регистр первого аргумента (16 бит) N = A + C - 1 | Разрешите и вызовите сайт вызова. Смотрите invoke-custom описание выше для подробностей. Присутствует в файлах Dex, начиная с версии |
fe 21c | константный дескриптор метода vAA, method_handle @ BBBB | A: регистр назначения (8 бит) B: индекс дескриптора метода (16 бит) | Переместите ссылку на дескриптор метода, заданный данным индексом, в
указанный регистр. Присутствует в файлах Dex, начиная с версии |
ff 21c | const-method-type vAA, proto @ BBBB | A: регистр назначения (8 бит) B: ссылка на прототип метода (16 бит) | Переместите ссылку на прототип метода, заданный указанным индексом, в
указанный регистр. Присутствует в файлах Dex, начиная с версии |
начальное образование - Как учить двоичных чисел 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
.