Бинар 5б инструкция: Бинар 5 инструкция по установке – АвтоТоп

Содержание

Бинар 5

Бинар-5 Компакт Модель
Технические характеристики Бинар 5Б-Компакт Бинар 5Д-Компакт
Номинальное напряжение питания, В 12
Расход топлива, л/ч 0,7 0,6
Теплопроизводительность, кВт 5
Допустимое отклонение напряжение питания от номинала, В 9,5..16
Потребляемая мощность вместе с помпой, Вт 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Срыв пламениЗафиксирован срыв пламени
во время работы.
Ошибка информационная
(не критическая).
Показывается для информации
пользователя.
Проверить затяжку хомутов на
топливопроводе, герметичность
топливопровода, герметичность
штуцера на топливном насосе

Руководства по эксплуатации — ООО «Автокомфорт»

ВОЗДУШНЫЕ ОТОПИТЕЛИ
“Планар 4ДМ-12″ – руководство по эксплуатации Скачать (PDF, 1.6Мб)
“Планар 4ДМ-24″ – схема устройства Смотреть (GIF, 0.17Мб)
“Планар 8ДМ-12,24″ – руководство по эксплуатации Скачать (PDF, 0.85Мб)
“Планар 8ДМ-12,24″ – номенклатура запчастей Скачать (DOC, 1.2Мб)
“Терммикс 15Д-12,24″ – руководство по эксплуатации Скачать (PDF, 0.37Мб)
ТУ 4591-008-40991176-2005 “Отопители воздушные” Скачать (PDF, 0.5Мб)
ЖИДКОСТНЫЕ ПРЕДПУСКОВЫЕ ПОДОГРЕВАТЕЛИ ДВИГАТЕЛЯ
Руководство по эксплуатации Бинар
модели: 5Б, 5Б-С, 5Д, 5Д-С
Скачать (PDF, 1.5Мб)
“Бинар 5″ – Технические Условия Скачать (PDF, 1.1Мб)
Руководство по эксплуатации “Бинар 30, 24В” Скачать (PDF, 1,4Мб)
Руководство по эксплуатации “14ТС-10″, “14ТС-10-12В” с монтажным комплектом Скачать (PDF, 1. 2Мб)
Руководство по эксплуатации “14ТС-10-24В”
(конвейер КАМАЗа)
Скачать (PDF, 0.8Мб)
Руководство по эксплуатации “11ТС”
(конвейер КАМАЗа)
Скачать (PDF, 0.8Мб)
Руководство по эксплуатации “14ТС-20″, “14ТС-20-У4″
(конвейер УРАЛАЗа)
Скачать (PDF, 0.54Мб)
Руководство по эксплуатации “20ТС” Скачать (PDF, 1,35Мб)
Паспорт “14ТС-10″ (конвейер КАМАЗа) Скачать (PDF, 0.16Мб)
Паспорт “14ТС-20″, “14ТС-20-У4″ (конвейер УРАЛАЗА) Скачать (PDF, 0.14Мб)
Сертификат соответствия требованиям
правил ECE №122 (TUV)
Скачать (PDF, 1.36Мб)
Блоки электронные 14ТС-10. Взаимозаменяемость. Скачать (PDF, 1.3Мб)
Ремонт “14ТС-01″, “14ТС-10″, “14ТС-20″, “11ТС” Скачать (PDF, 2.8Мб)
Схема “Теплостар 14ТС-10″ Скачать (GIF, 0.16Мб)
Номенклатура запасных частей на “14ТС-10″.
Взаимозаменяемость
Скачать (PDF, 1.9Мб)
Пульт-таймер для “14ТС-10″, “11ТС” Скачать (PDF, 0.33Мб)
Подогреватель предпусковой дизельный
ТУ 4591-004-40991176-2003
Скачать (PDF, 0.94Мб)

Предпусковой подогреватель BINAR-5s-comfort (бензин) в комплекте с модемом simcom

Наименование

№ детали, сборки

Блок управления GP ( бензин 12 В )

сб. 2422

Блок управления ( дизель 24в )

сб. 1591

Блок управления ( бензин 12 в с датчиками температуры в Al корпусе ) необходимо заказать еще прижим д. 1915

сб. 1931

Блок управления ( дизель 12 в с датчиками температуры в Al корпусе) необходимо заказать еще прижим д. 1915

сб. 1935

Блок управления GP ( дизель 12 В )

сб. 2427

Воздухопровод с фильтром (монтажный комплект)

сб. 2684

Датчик ( старая сб 1933) необходимо заказывать две штуки плюс прижим д. 1915

сб. 3080

Жгут

сб. 1123

Жгут

сб. 1349

Жгут (переходник для модема на ранние выпуски Бинар 5)

сб. 2009

Индикатор пламени

сб. 1129

Камера сгорания (бензин)

сб. 1133

Камера сгорания (дизель)

сб. 1234

Комплект ремонтный для Бинар 5 ( кольцо д.1063, д.1250, д.1251, прокладка д. 1249, втулка д.859)

сб 2724

Комплект ремонтный для Бинар 5 компакт ( втулка д. 859, прокладка д.1249, д. 2153, кольцо д.1251, д.2152, д.1950, д 1947)

сб 2717

Кронштейн крепления

д. 1544

Монтажный комплект помпы Bosch PAD 12V (для изделий выпуска до сентября 2013 года)

сб. 2377

Нагнетатель воздуха

сб. 1122

Нагнетатель воздуха для Бинар 5 Компакт

сб. 1953

Насос дозировочный Р327 12 В (Топливный насос для Бинар 5Б-компакт)

 

Прижим (для датчиков в Al корпусе)

д. 1915

Пульт управления

сб. 1130

Рукав ( тосольный шланг с углами)

д. 1890

Свеча

сб. 1128

Свеча GP 18 в (24 в) только для изделий с маркировкой GP

сб 2428

Свеча GP 9 в ( 12 в) только для изделий с маркировкой GP

сб 2423

Сетка ( для бензина)

сб 1132

Сетка топливная( для дизеля)

сб 869

Теплообменник ( 2 шт комплект)

д 1533 и 1534

Топливный насос ТН5-4/12 (бензин Бинар 5Б-С/СВ)

сб. 1080

Топливный насос ТН7-4/12 (дизель)

сб. 1723

Труба выхлопная

сб. 507

Фильтр сменный ( для воздухопровода сб 2684)

сб. 2688

Хомут для топливного насоса ( резиновый)

сб 1467

Электронасос Bosch 0392023004 (для изделий выпуска после сентября 2013 )

 

Неисправности подогревателей двигателя Теплостар, Бинар

Код Неисправность Рекомендации по устранению
01 Перегрев (по температуре). Температура теплообменника в зоне датчика температуры более 110ºС. 
  1. Проверить полностью жидкостный контур.
  2. Проверить помпу, при необходимости заменить.
  3. Проверить датчик температуры и датчик перегрева, при необходимости заменить.
  4. Проверить качество тосола, который должен применяться в зависимости от температуры окружающей среды.
02 Возможный перегрев. Разница температур, замеренных датчиком перегрева и датчиком температуры, слишком большая.
03 Неисправность датчика температуры №1. Короткое замыкание или обрыв проводников. Заменить датчик.
04  Неисправность датчика температуры №2. Короткое замыкание или обрыв проводников. Заменить датчик.
05 Неисправность индикатора пламени. Короткое замыкание на корпус или обрыв в электропроводке индикатора. Проверить индикатор пламени при необходимости заменить.
06  Неисправность датчика температуры на блоке управления. Вышел из строя датчик температуры (находиться в блоке управления, замене не подлежит). Заменить блок управления.
07 Прерывание пламени на режиме работы «МАЛЫЙ». Условия для поддержания горения плохие. Недостаток топлива или воздуха, закопчен теплообменник, засорена выхлопная труба. Проверить воздухозаборник, газоотводящий трубопровод и подачу топлива, устранить неисправности, при необходимости заменить топливный насос или индикатор пламени.
08 Прерывание пламени на режиме работы «ПОЛНЫЙ». Условия для поддержания горения плохие. Недостаток топлива или воздуха, закопчен теплообменник, засорена выхлопная труба. Проверить воздухозаборник, газоотводящий трубопровод и подачу топлива, устранить неисправности, при необходимости заменить топливный насос или индикатор пламени.
09 Неисправность свечи накаливания. Короткое замыкание, обрыв, неисправность блока управления. Проверить свечу накаливания, при необходимости заменить. Проверить блок управления, при необходимости заменить.
10 Неисправность нагнетателя воздуха. Обороты ниже номинала. Посторонние предметы (мусор) мешают вращению крыльчатки или крыльчатка задевает за крышку нагнетателя воздуха. Проверить электропроводку. Проверить НВ на наличие грязи. Устранить неисправность, при необходимости заменить нагнетатель воздуха. 
11 Перегрев (по скорости). Скорость нагрева температурных датчиков высокая. 
  1. Проверить полностью жидкостный контур (возможно образовалась воздушная пробка перед помпой и по этому охлаждающая жидкость не прокачивается через нагреватель).
  2. Проверить охлаждающую жидкость.
  3. Проверить помпу, при необходимости заменить.
12  Отключение, повышенное напряжение. Напряжение питания выше 16 В. Проверить напряжение на разъеме ХS2 нагревателя. Проверить аккумуляторную батарею, регулятор напряжения автомобиля и подводящую электропроводку.
13  Попытки запуска исчерпаны. Розжиг не состоялся. (2 раза). Проверить топливопровод, топливный насос и нагнетатель воздуха. Проверить выхлопную трубу. Проверить камеру сгорания, при необходимости почистить отверстие Ø 2,8 мм.
14  Неисправность помпы. Обрыв или короткое замыкание токоведущих частей, загрязнение насосной части. Проверить электропровода циркуляционного насоса на короткое замыкание и обрыв, проверить помпу и при необходимости заменить. Почистить насосную часть помпы.
15  Отключение, пониженное напряжение. Напряжение питания менее 9,5 В. Проверить напряжение на разъеме ХS2 нагревателя. Проверить аккумуляторную батарею, регулятор напряжения автомобиля и подводящую электропроводку.
16 Превышено время на вентиляцию. За время продувки не достаточно охлаждён датчик пламени. Проверить воздухозаборник и газоотводящий трубопровод. Проверить индикатор пламени и при необходимости заменить. 
17  Неисправность топливного насоса (короткое замыкание). Короткое замыкание в электропроводке топливного насоса. Проверить электропровода топливного насоса на короткое замыкание, при необходимости заменить.
20  Нет связи между блоком управления и пультом. Короткое замыкание или обрыв в электропроводке. Проверить предохранитель 5 А. Проверить цепи и контакты. 
21  Прерывание пламени на режиме «ПРОГРЕВ». Условия для поддержания горения плохие. Недостаток топлива или воздуха, закопчен теплообменник, засорена выхлопная труба. Проверить воздухозаборник, газоотводящий трубопровод и подачу топлива, устранить неисправности, при необходимости заменить топливный насос и индикатор пламени.
22  Неисправность топливного насоса (обрыв).  Обрыв в электропроводке топливного насоса. Проверить электропровода топливного насоса на обрыв, при необходимости заменить. 
27  Неисправность нагнетателя воздуха. Двигатель не вращается (возможно задевание).  Проверить НВ на наличие механических помех вращению. Проверить электропроводку, нагнетатель воздуха и блок управления при необходимости заменить.
28 Неисправность нагнетателя воздуха. Двигатель вращается без управления (возможна неисправность 5 В питания в блоке управления).  Проверить НВ на наличие механических помех вращению. Проверить электропроводку, нагнетатель воздуха и блок управления при необходимости заменить.
29 Исчерпаны попытки розжига во время работы подогревателя. Количество повторных розжигов больше 4-х. Проверить топливную систему. Проверить затяжку хомутов на топливопроводе, герметичность топливопровод, герметичность щтуцера на топливном насосе, производительность топливного насоса.
30 Срыв пламени в камере сгорания в результате просадки напряжения. При снижении питания бортовой сети воздуходувка останавливается. Проверить аккумуляторную батарею, электропроводку. (Просадка напряжения может возникнуть из-за длительного включения электростартера).
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 подключение к сигнализации

 

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

 

 

 

 

Отзывы о предпусковых подогревателях Бинар: Оценки, Рейтинги, Сайт, Страна

Что мы знаем о предпусковых подогревателях Бинар

Бренд производителя зарегистрирован в стране — Израиль. Официальный сайт находится по адресу: http://teplostar-auto.ru/.

В апреле 2021 на PartReview сложилось позитивное мнение о предпусковых подогревателях Бинар.

Оценка PR — 88 из 100, базируется на основе 75 отзывов и 236 голосов. 64 отзыва имеют положительную оценку, 8 — нейтральную, и 3 — отрицательную. Средняя оценка отзывов — 4.3 (из 5). Голоса распределились так: 210 — за, 26 — против.

В рейтинге лучших производителей предпусковых подогревателей запчасть занимает 4 позицию, уступая таким производителям как Северс и Eberspacher , но опережая предпусковые подогреватели Webasto и Лунфэй.

Пользователи также составили мнение о качествах предпусковых подогревателей Бинар:

  1. Скорость прогрева — время, необходимое на прогрев двигателя — оценивается позитивно. 4.4 балла из 5.
  2. Установка — удобство установки оборудования — оценивается позитивно. 4.2 балла из 5.
  3. Долговечность — сохранение работоспособности на протяжении заявленного срока — оценивается позитивно. 4.1 балла из 5.

Предпусковой подогреватель Бинар в авторейтингах

Здесь можно узнать владельцы каких марок и моделей ставили предпусковые подогреватели Бинар на свои авто. Далее список авторейтингов, в которых данная запчасть входит в ТОП-3 лучших:

  1. Бинар на первом месте в авторейтинге предпусковых подогревателей для: Toyota Land Cruiser, Mitsubishi Pajero, Honda Civic, Honda CR-V, Ford Focus .
  2. Бинар на втором месте в авторейтинге предпусковых подогревателей для: Toyota Prius, УАЗ Patriot, Toyota Corolla, Toyota Crown, Volkswagen Golf .
  3. Бинар на третьем месте в авторейтинге предпусковых подогревателей для: Toyota Land Cruiser Prado, Mitsubishi L200, Toyota Mark 2 .

Предпусковой подогреватель Бинар в сравнении

На PartReview доступны 9 сравнений предпусковых подогревателей Бинар c другими производителями.

В частности можно выяснить, чьи предпусковые подогреватели лучше: Атлант или Бинар, Альянс или Бинар, Eberspacher или Бинар, Теплостар или Бинар, Бинар или Defa .

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

Обзор

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

Назначение

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

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

Повестка дня

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

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

Заключение

Оценка

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

Представляющие числа

Обзор

На этом уроке студенты узнают о двоичной системе счисления.С набором карточек, которые представляют значения разрядов в двоичной системе счисления (с основанием 2) набором точек, учащиеся включают или выключают биты, переворачивая карточки лицевой стороной вверх и вниз, а затем наблюдают за числами, которые в результате этих различных моделей. В конце концов, студенты расширяют шаблон до общей 4-битной системы.

Назначение

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

Этот урок во многом заимствован из аналогичного упражнения в CS Unplugged.

Повестка дня

Разминка (10 минут)

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

Подведение итогов (10 минут)

Посмотреть на Code Studio

Цели

Студенты смогут:

  • Используйте двоичную систему для представления чисел.
  • Расширить систему представления на основе шаблонов.

Ссылки

Внимание! Сделайте копии всех документов, которыми вы планируете поделиться со студентами.

Учителям

Студентам

Разминка (10 минут)

Цель обсуждения

Цель: На этом и следующих уроках студенты будут изучать новую систему представления чисел с помощью двухпозиционных сигналов.Мотивируйте это занятие, вспоминая виды информации, которые студенты в конечном итоге захотят представить с помощью этой системы. Если учащимся нужна помощь в мозговом штурме, приведите им несколько примеров, например возраст, рост, день рождения, количество друзей, стоимость предметов, рейтинг предмета и т. д.

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

  • Интернет-магазин (какие номера отслеживает магазин?)
  • Профиль в социальной сети (что в вас или ваших друзьях есть числа?)

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

Примечания

Числа — действительно полезный и важный способ представления всех видов информации. Если мы хотим представлять числа на компьютере, нам придется изучить новую систему, которая позволяет нам это делать.

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

Учебный совет

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

Группа: Разделите учащихся на пары.

Раздайте: Раздайте каждой паре экземпляр «Представляющие числа — руководство по выполнению упражнений» и набор карточек с номерами — «Манипулятивное».

Двоичные карты

Учебный совет

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

Модель: Рассмотрите пример задачи как класс. Попросите учащихся разложить карточки лицевой стороной вверх и вниз так, чтобы было видно ровно тринадцать точек. (Важно, чтобы каждая группа использовала только один набор карт.) После некоторых проб и ошибок ученики должны увидеть, что карты 8, 4 и 1 должны быть открыты, а 2 карты — лицевой стороной вниз. (У У Д У)

Разрешите учащимся заполнить оставшуюся часть страницы парами.

Когда все ученики дочитают страницу, попросите их собраться вместе всем классом и поделиться своими ответами.

Подсказка: Было ли более одного возможного ответа на любую из проблем?

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

Цель обсуждения

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

Наименьшее число, которое ученики могут набрать с помощью карточек, — 0 (а не 1). Об этом будет сказано в следующих упражнениях.

Подсказка: Какое наименьшее число вы можете составить? Самое большое число, которое вы можете сделать?

Использование шаблона

Разрешите учащимся заполнить вторую половину рабочего листа.

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

Цель обсуждения

Цель Учащиеся должны понимать, что шаблоны чисел и правила, которым они следовали, чтобы получить их, позволили им выяснить, как число будет представлено, без использования таблицы, как они это делали в ASCII. Если они расширят шаблоны, они смогут получить гораздо более высокие числа.

Подсказка: Когда мы изучали ASCII, вам приходилось использовать таблицу для поиска каждой буквы.Для двоичных чисел вы могли представлять свои числа без таблицы. Как ты это сделал? Не могли бы вы выяснить, какой двоичный код может быть для числа больше 15?

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

Примечания

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

Отправьте студентов на онлайн-урок.

Подведение итогов (10 минут)

Подсказка: Итак, мы рассмотрели, как можно представить текст, изображения и числа в двоичном формате. Есть ли какие-либо другие типы данных, которые вы используете на своем компьютере, которые необходимо представить?

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

Примечания

Это все типы данных, которые необходимо представить в двоичном формате. Мы собираемся посмотреть видео, в котором немного подробнее объясняется, как это работает.

Дисплей: Воспроизвести видео «Двоичные и данные».

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

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

Подписи


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

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

Эта техника может быть немного сложной для освоения ванильной логики 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 = «Логика POP Shellcode для переадресации / обратного вызова JMP»

строк:
/ *
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»

строки:
$ 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)}

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

Инструкции

— WebAssembly 1.

1

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

Примечание

Пробелы в диапазонах байтового кода для инструкций кодирования зарезервированы для будущих расширений.

Инструкции по управлению

Команды управления имеют разные кодировки.Для структурированных инструкций последовательности инструкций, образующие вложенные блоки, заканчиваются явными кодами операций для \ (\ href {../ syntax / instructions.html # syntax-instr-control} {\ mathsf {end}} \) и \ (\ href {../ syntax / instructions.html # syntax-instr-control} {\ mathsf {else}} \).

Типы блоков кодируются в специальной сжатой форме либо байтом \ (\ def \ mathdef760 # 1 {\ mathtt {0x # 1}} \ mathdef760 {40} \), указывающим пустой тип, как тип с одним значением, либо как индекс типа, закодированный как положительное целое число со знаком.

\ [\ begin {split} \ begin {array} {llcllll} \ def \ mathdef723 # 1 {{}} \ mathdef723 {тип блока} & \ href {../ binary / instructions.html # binary-blocktype} {\ mathtt {blocktype}} & :: = & \ def \ mathdef761 # 1 {\ mathtt {0x # 1}} \ mathdef761 {40} & \ Rightarrow & \ epsilon \\ && | & t {:} \ href {../ binary / types.html # binary-valtype} {\ mathtt {valtype}} & \ Rightarrow & t \\ && | & x {:} \ href {../ binary / values.html # binary-int} {\ def \ mathdef733 # 1 {{\ mathtt {s} # 1}} \ mathdef733 {\ mathtt {33}}} & \ Стрелка вправо & x & (\ mathrel {\ mbox {if}} x \ geq 0) \\ \ def \ mathdef723 # 1 {{}} \ mathdef723 {инструкция} & \ href {../binary/instructions.html#binary-instr}{\mathtt{instr}} & :: = & \ def \ mathdef762 # 1 {\ mathtt {0x # 1}} \ mathdef762 {00} & \ Rightarrow & \ href {../ syntax / instructions. \ ast {:} \ href {.\ ast ~ l_N \\ && | & \ def \ mathdef776 # 1 {\ mathtt {0x # 1}} \ mathdef776 {0F} & \ Rightarrow & \ href {../ syntax / instructions.html # syntax-instr-control} {\ mathsf {return}} \\ && | & \ def \ mathdef777 # 1 {\ mathtt {0x # 1}} \ mathdef777 {10} ~~ x {:} \ href {../ binary / modules.html # binary-funcidx} {\ mathtt {funcidx}} & \ Rightarrow & \ href {../ syntax / instructions.html # syntax-instr-control} {\ mathsf {call}} ~ x \\ && | & \ def \ mathdef778 # 1 {\ mathtt {0x # 1}} \ mathdef778 {11} ~~ y {:} \ href {../ binary / modules.html # binary-typeidx} {\ mathtt {typeidx}} ~~ x {:} \ href {../ binary / modules.html # binary-tableidx} {\ mathtt {tableidx}} & \ Rightarrow & \ href {.. /syntax/instructions.html#syntax-instr-control}{\mathsf{call\_indirect}}~x~y \\ \ end {array} \ end {split} \]

Примечание

Код операции \ (\ href {../ syntax / instructions.html # syntax-instr-control} {\ mathsf {else}} \) \ (\ def \ mathdef779 # 1 {\ mathtt {0x # 1}} \ mathdef779 {05} \) в кодировке \ (\ href {../ syntax / instructions.html # syntax-instr-control} {\ mathsf {if}} \) инструкцию можно опустить, если следующая последовательность инструкций пустой.

В отличие от любого другого случая, индекс типа в типе блока кодируется как положительное целое число со знаком, так что его битовый шаблон со знаком LEB128 не может конфликтовать с кодировкой типов значений или специальным кодом \ (\ def \ mathdef780 # 1 {\ mathtt {0x # 1}} \ mathdef780 {40} \), которые соответствуют кодировке отрицательных целых чисел LEB128. Чтобы избежать потерь в диапазоне допустимых индексов, оно обрабатывается как 33-битовое целое число со знаком.

В будущих версиях WebAssembly нулевой байт, встречающийся в кодировке из \ (\ href {../syntax/instructions.html#syntax-instr-control} {\ mathsf {call \ _indirect}} \) может использоваться для индексации дополнительных таблиц.

Справочные инструкции

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

\ [\ begin {split} \ begin {array} {llclll} \ def \ mathdef723 # 1 {{}} \ mathdef723 {инструкция} & \ href {../ binary / instructions.html # binary-instr} {\ mathtt {instr}} & :: = & \ dots \\ && | & \ def \ mathdef781 # 1 {\ mathtt {0x # 1}} \ mathdef781 {D0} ~~ t {:} \ href {../binary/types.html#binary-reftype}{\mathtt{reftype}} & \ Rightarrow & \ href {../ syntax / instructions.html # syntax-instr-ref} {\ mathsf {ref {.} null} } ~ t \\ && | & \ def \ mathdef782 # 1 {\ mathtt {0x # 1}} \ mathdef782 {D1} & \ Rightarrow & \ href {../ syntax / instructions.html # syntax-instr-ref} {\ mathsf {ref {.} \ _null}} \\ && | & \ def \ mathdef783 # 1 {\ mathtt {0x # 1}} \ mathdef783 {D2} ~~ x {:} \ href {../ binary / modules.html # binary-funcidx} {\ mathtt {funcidx}} & \ Rightarrow & \ href {../ синтаксис / инструкции.html # syntax-instr-ref} {\ mathsf {ref {.} func}} ~ x \\ \ end {array} \ end {split} \]

Примечание

Эти присвоения кода операции являются предварительными.

Параметрические инструкции

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

\ [\ begin {split} \ begin {array} {llclll} \ def \ mathdef723 # 1 {{}} \ mathdef723 {инструкция} & \ href {../ binary / instructions.html # binary-instr} {\ mathtt {instr}} & :: = & \ dots \\ && | & \ def \ mathdef784 # 1 {\ mathtt {0x # 1}} \ mathdef784 {1A} & \ Rightarrow & \ href {.\ ast \\ \ end {array} \ end {split} \]

Переменные инструкции

Команды переменных представлены байтовыми кодами, за которыми следует кодирование соответствующего индекса.

\ [\ begin {split} \ begin {array} {llclll} \ def \ mathdef723 # 1 {{}} \ mathdef723 {инструкция} & \ href {../ binary / instructions.html # binary-instr} {\ mathtt {instr}} & :: = & \ dots \\ && | & \ def \ mathdef787 # 1 {\ mathtt {0x # 1}} \ mathdef787 {20} ~~ x {:} \ href {../ binary / modules.html # binary-localidx} {\ mathtt {localidx}} & \ Rightarrow & \ href {. ./syntax/instructions.html#syntax-instr-variable}{\mathsf{local.get}}~x \\ && | & \ def \ mathdef788 # 1 {\ mathtt {0x # 1}} \ mathdef788 {21} ~~ x {:} \ href {../ binary / modules.html # binary-localidx} {\ mathtt {localidx}} & \ Rightarrow & \ href {../ syntax / instructions.html # syntax-instr-variable} {\ mathsf {local.set}} ~ x \\ && | & \ def \ mathdef789 # 1 {\ mathtt {0x # 1}} \ mathdef789 {22} ~~ x {:} \ href {../ binary / modules.html # binary-localidx} {\ mathtt {localidx}} & \ Rightarrow & \ href {../ синтаксис / инструкции.html # syntax-instr-variable} {\ mathsf {local.tee}} ~ x \\ && | & \ def \ mathdef790 # 1 {\ mathtt {0x # 1}} \ mathdef790 {23} ~~ x {:} \ href {../ binary / modules.html # binary-globalidx} {\ mathtt {globalidx}} & \ Rightarrow & \ href {../ syntax / instructions.html # syntax-instr-variable} {\ mathsf {global.get}} ~ x \\ && | & \ def \ mathdef791 # 1 {\ mathtt {0x # 1}} \ mathdef791 {24} ~~ x {:} \ href {../ binary / modules.html # binary-globalidx} {\ mathtt {globalidx}} & \ Rightarrow & \ href {../ syntax / instructions.html # syntax-instr-variable} {\ mathsf {global.set}} ~ x \\ \ end {array} \ end {split} \]

Таблица инструкций

Табличные инструкции представлены однобайтовыми или двухбайтовыми кодами.

\ [\ begin {split} \ begin {array} {llclll} \ def \ mathdef723 # 1 {{}} \ mathdef723 {инструкция} & \ href {../ binary / instructions.html # binary-instr} {\ mathtt {instr}} & :: = & \ dots \\ && | & \ def \ mathdef792 # 1 {\ mathtt {0x # 1}} \ mathdef792 {25} ~~ x {:} \ href {../ binary / modules.html # binary-tableidx} {\ mathtt {tableidx}} & \ Rightarrow & \ href {../syntax/instructions.html#syntax-instr-table}{\mathsf{table.get}}~x \\ && | & \ def \ mathdef793 # 1 {\ mathtt {0x # 1}} \ mathdef793 {26} ~~ x {:} \ href {../ binary / modules.html # binary-tableidx} {\ mathtt {tableidx}} & \ Rightarrow & \ href {../ syntax / instructions.html # syntax-instr-table} {\ mathsf {table.set}} ~ x \\ && | & \ def \ mathdef794 # 1 {\ mathtt {0x # 1}} \ mathdef794 {FC} ~~ 12 {:} \ href {. ./ binary / values.html # binary-int} {\ def \ mathdef728 # 1 { {\ mathtt {u} # 1}} \ mathdef728 {\ mathtt {32}}} ~~ y {:} \ href {../ binary / modules.html # binary-elemidx} {\ mathtt {elemidx}} ~~ x {:} \ href {../ binary / modules.html # binary-tableidx} {\ mathtt {tableidx}} & \ Rightarrow & \ href {.. /syntax/instructions.html#syntax-instr-table}{\mathsf{table.init}}~x~y \\ && | & \ def \ mathdef795 # 1 {\ mathtt {0x # 1}} \ mathdef795 {FC} ~~ 13 {:} \ href {../ binary / values.html # binary-int} {\ def \ mathdef728 # 1 { {\ mathtt {u} # 1}} \ mathdef728 {\ mathtt {32}}} ~~ x {:} \ href {../ binary / modules.html # binary-elemidx} {\ mathtt {elemidx}} & \ Rightarrow & \ href {../ синтаксис / инструкции.html # syntax-instr-table} {\ mathsf {elem.drop}} ~ x \\ && | & \ def \ mathdef796 # 1 {\ mathtt {0x # 1}} \ mathdef796 {FC} ~~ 14 {:} \ href {../ binary / values.html # binary-int} {\ def \ mathdef728 # 1 { {\ mathtt {u} # 1}} \ mathdef728 {\ mathtt {32}}} ~~ x {:} \ href {../ binary / modules.html # binary-tableidx} {\ mathtt {tableidx}} ~ ~ y {:} \ href {../ binary / modules.html # binary-tableidx} {\ mathtt {tableidx}} & \ Rightarrow & \ href {../ syntax / instructions.html # syntax-instr-table} { \ mathsf {table.copy}} ~ x ~ y \\ && | & \ def \ mathdef797 # 1 {\ mathtt {0x # 1}} \ mathdef797 {FC} ~~ 15 {:} \ href {../binary/values.html#binary-int} {\ def \ mathdef728 # 1 {{\ mathtt {u} # 1}} \ mathdef728 {\ mathtt {32}}} ~~ x {:} \ href {. ./binary/modules.html#binary-tableidx}{\mathtt{tableidx}} & \ Rightarrow & \ href {../ syntax / instructions.html # syntax-instr-table} {\ mathsf {table.grow}} ~ х \\ && | & \ def \ mathdef798 # 1 {\ mathtt {0x # 1}} \ mathdef798 {FC} ~~ 16 {:} \ href {../ binary / values.html # binary-int} {\ def \ mathdef728 # 1 { {\ mathtt {u} # 1}} \ mathdef728 {\ mathtt {32}}} ~~ x {:} \ href {../ binary / modules.html # binary-tableidx} {\ mathtt {tableidx}} & \ Rightarrow & \ href {../syntax/instructions.html#syntax-instr-table}{\mathsf{table. size}}~x \\ && | & \ def \ mathdef799 # 1 {\ mathtt {0x # 1}} \ mathdef799 {FC} ~~ 17 {:} \ href {../ binary / values.html # binary-int} {\ def \ mathdef728 # 1 { {\ mathtt {u} # 1}} \ mathdef728 {\ mathtt {32}}} ~~ x {:} \ href {../ binary / modules.html # binary-tableidx} {\ mathtt {tableidx}} & \ Rightarrow & \ href {../ syntax / instructions.html # syntax-instr-table} {\ mathsf {table.fill}} ~ x \\ \ end {array} \ end {split} \]

Инструкции памяти

Каждый вариант инструкции памяти кодируется различным байтовым кодом.Загрузка и сохранение сопровождаются кодировкой их \ (\ href {../ syntax / instructions.html # syntax-memarg} {\ mathit {memarg}} \) немедленно.

\ [\ begin {split} \ begin {array} {llclll} \ def \ mathdef723 # 1 {{}} \ mathdef723 {аргумент памяти} & \ href {../ binary / instructions.html # binary-memarg} {\ mathtt {memarg}} & :: = & a {:} \ href {../ binary / values.html # binary-int} {\ def \ mathdef728 # 1 {{\ mathtt {u} # 1}} \ mathdef728 {\ mathtt {32}}} ~~ o {:} \ href {../ binary / values.html # binary-int} {\ def \ mathdef728 # 1 {{\ mathtt {u} # 1}} \ mathdef728 {\ mathtt {32}}} & \ Стрелка вправо & \ {\ href {../syntax/instructions.html#syntax-instr-memory}{\mathsf{align}}~a,~\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{offset}} ~ о \} \\ \ def \ mathdef723 # 1 {{}} \ mathdef723 {инструкция} & \ href {../ binary / instructions.html # binary-instr} {\ mathtt {instr}} & :: = & \ dots \\ && | & \ def \ mathdef800 # 1 {\ mathtt {0x # 1}} \ mathdef800 {28} ~~ m {:} \ href {../ binary / instructions.html # binary-memarg} {\ mathtt {memarg}} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i32}}.\ href {../ syntax / instructions.html # syntax-instr-memory} {\ mathsf {load}} ~ m \\ && | & \ def \ mathdef801 # 1 {\ mathtt {0x # 1}} \ mathdef801 {29} ~~ m {:} \ href {../ binary / instructions.html # binary-memarg} {\ mathtt {memarg}} & \ Rightarrow & \ href {../ syntax / types. html # syntax-valtype} {\ mathsf {i64}}. \ Href {../ syntax / instructions.html # syntax-instr-memory} {\ mathsf {load} } ~ m \\ && | & \ def \ mathdef802 # 1 {\ mathtt {0x # 1}} \ mathdef802 {2A} ~~ m {:} \ href {../ binary / instructions.html # binary-memarg} {\ mathtt {memarg}} & \ Rightarrow & \ href {../syntax/types.html#syntax-valtype}{\mathsf{f32}}.\href{../syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}~m \\ && | & \ def \ mathdef803 # 1 {\ mathtt {0x # 1}} \ mathdef803 {2B} ~~ m {:} \ href {../ binary / instructions.html # binary-memarg} {\ mathtt {memarg}} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f64}}. \ Href {../ syntax / instructions.html # syntax-instr-memory} {\ mathsf {load} } ~ m \\ && | & \ def \ mathdef804 # 1 {\ mathtt {0x # 1}} \ mathdef804 {2C} ~~ m {:} \ href {../ двоичный / инструкции.html # binary-memarg} {\ mathtt {memarg}} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i32}}. \ href {../ синтаксис / инструкции. html # syntax-instr-memory} {\ mathsf {load}} \ mathsf {8 \ _s} ~ m \\ && | & \ def \ mathdef805 # 1 {\ mathtt {0x # 1}} \ mathdef805 {2D} ~~ m {:} \ href {../ binary / instructions.html # binary-memarg} {\ mathtt {memarg}} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i32}}. \ Href {../ syntax / instructions.html # syntax-instr-memory} {\ mathsf {load} } \ mathsf {8 \ _u} ~ m \\ && | & \ def \ mathdef806 # 1 {\ mathtt {0x # 1}} \ mathdef806 {2E} ~~ m {:} \ href {../binary/instructions.html#binary-memarg}{\mathtt{memarg}} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i32}}. \ href {. ./syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{16\_s}~m \\ && | & \ def \ mathdef807 # 1 {\ mathtt {0x # 1}} \ mathdef807 {2F} ~~ m {:} \ href {../ binary / instructions.html # binary-memarg} {\ mathtt {memarg}} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i32}}. \ Href {../ syntax / instructions.html # syntax-instr-memory} {\ mathsf {load} } \ mathsf {16 \ _u} ~ m \\ && | & \ def \ mathdef808 # 1 {\ mathtt {0x # 1}} \ mathdef808 {30} ~~ m {:} \ href {../binary/instructions.html#binary-memarg}{\mathtt{memarg}} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i64}}. \ href {. ./syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{8\_s}~m \\ && | & \ def \ mathdef809 # 1 {\ mathtt {0x # 1}} \ mathdef809 {31} ~~ m {:} \ href {../ binary / instructions.html # binary-memarg} {\ mathtt {memarg}} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i64}}. \ Href {../ syntax / instructions.html # syntax-instr-memory} {\ mathsf {load} } \ mathsf {8 \ _u} ~ m \\ && | & \ def \ mathdef810 # 1 {\ mathtt {0x # 1}} \ mathdef810 {32} ~~ m {:} \ href {../binary/instructions.html#binary-memarg}{\mathtt{memarg}} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i64}}. \ href {. ./syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{16\_s}~m \\ && | & \ def \ mathdef811 # 1 {\ mathtt {0x # 1}} \ mathdef811 {33} ~~ m {:} \ href {../ binary / instructions.html # binary-memarg} {\ mathtt {memarg}} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i64}}. \ Href {../ syntax / instructions.html # syntax-instr-memory} {\ mathsf {load} } \ mathsf {16 \ _u} ~ m \\ && | & \ def \ mathdef812 # 1 {\ mathtt {0x # 1}} \ mathdef812 {34} ~~ m {:} \ href {../binary/instructions.html#binary-memarg}{\mathtt{memarg}} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i64}}. \ href {. ./syntax/instructions.html#syntax-instr-memory}{\mathsf{load}}\mathsf{32\_s}~m \\ && | & \ def \ mathdef813 # 1 {\ mathtt {0x # 1}} \ mathdef813 {35} ~~ m {:} \ href {../ binary / instructions.html # binary-memarg} {\ mathtt {memarg}} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i64}}. \ Href {../ syntax / instructions.html # syntax-instr-memory} {\ mathsf {load} } \ mathsf {32 \ _u} ~ m \\ && | & \ def \ mathdef814 # 1 {\ mathtt {0x # 1}} \ mathdef814 {36} ~~ m {:} \ href {../binary/instructions.html#binary-memarg}{\mathtt{memarg}} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i32}}. \ href {. ./syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}~m \\ && | & \ def \ mathdef815 # 1 {\ mathtt {0x # 1}} \ mathdef815 {37} ~~ m {:} \ href {../ binary / instructions.html # binary-memarg} {\ mathtt {memarg}} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i64}}. \ Href {../ syntax / instructions.html # syntax-instr-memory} {\ mathsf {store} } ~ m \\ && | & \ def \ mathdef816 # 1 {\ mathtt {0x # 1}} \ mathdef816 {38} ~~ m {:} \ href {../binary/instructions.html#binary-memarg}{\mathtt{memarg}} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f32}}. \ href {. ./syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}~m \\ && | & \ def \ mathdef817 # 1 {\ mathtt {0x # 1}} \ mathdef817 {39} ~~ m {:} \ href {../ binary / instructions.html # binary-memarg} {\ mathtt {memarg}} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f64}}. \ Href {../ syntax / instructions.html # syntax-instr-memory} {\ mathsf {store} } ~ m \\ && | & \ def \ mathdef818 # 1 {\ mathtt {0x # 1}} \ mathdef818 {3A} ~~ m {:} \ href {../binary/instructions.html#binary-memarg}{\mathtt{memarg}} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i32}}. \ href {. ./syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}\mathsf{8}~m \\ && | & \ def \ mathdef819 # 1 {\ mathtt {0x # 1}} \ mathdef819 {3B} ~~ m {:} \ href {../ binary / instructions.html # binary-memarg} {\ mathtt {memarg}} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i32}}. \ Href {../ syntax / instructions.html # syntax-instr-memory} {\ mathsf {store} } \ mathsf {16} ~ m \\ && | & \ def \ mathdef820 # 1 {\ mathtt {0x # 1}} \ mathdef820 {3C} ~~ m {:} \ href {../binary/instructions.html#binary-memarg}{\mathtt{memarg}} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i64}}. \ href {. ./syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}\mathsf{8}~m \\ && | & \ def \ mathdef821 # 1 {\ mathtt {0x # 1}} \ mathdef821 {3D} ~~ m {:} \ href {../ binary / instructions.html # binary-memarg} {\ mathtt {memarg}} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i64}}. \ Href {../ syntax / instructions.html # syntax-instr-memory} {\ mathsf {store} } \ mathsf {16} ~ m \\ && | & \ def \ mathdef822 # 1 {\ mathtt {0x # 1}} \ mathdef822 {3E} ~~ m {:} \ href {../binary/instructions.html#binary-memarg}{\mathtt{memarg}} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i64}}. \ href {. ./syntax/instructions.html#syntax-instr-memory}{\mathsf{store}}\mathsf{32}~m \\ && | & \ def \ mathdef823 # 1 {\ mathtt {0x # 1}} \ mathdef823 {3F} ~~ \ def \ mathdef824 # 1 {\ mathtt {0x # 1}} \ mathdef824 {00} & \ Rightarrow & \ href {.. /syntax/instructions.html#syntax-instr-memory}{\mathsf{memory.size}} \\ && | & \ def \ mathdef825 # 1 {\ mathtt {0x # 1}} \ mathdef825 {40} ~~ \ def \ mathdef826 # 1 {\ mathtt {0x # 1}} \ mathdef826 {00} & \ Rightarrow & \ href {../syntax/instructions.html#syntax-instr-memory}{\mathsf{memory.grow}} \\ && | & \ def \ mathdef827 # 1 {\ mathtt {0x # 1}} \ mathdef827 {FC} ~~ 8 {:} \ href {../ binary / values.html # binary-int} {\ def \ mathdef728 # 1 { {\ mathtt {u} # 1}} \ mathdef728 {\ mathtt {32}}} ~~ x {:} \ href {../ binary / modules.html # binary-dataidx} {\ mathtt {dataidx}} ~ \ def \ mathdef828 # 1 {\ mathtt {0x # 1}} \ mathdef828 {00} & \ Rightarrow & \ href {../ syntax / instructions.html # syntax-instr-memory} {\ mathsf {memory.init}} ~ х \\ && | & \ def \ mathdef829 # 1 {\ mathtt {0x # 1}} \ mathdef829 {FC} ~~ 9 {:} \ href {../binary/values.html#binary-int} {\ def \ mathdef728 # 1 {{\ mathtt {u} # 1}} \ mathdef728 {\ mathtt {32}}} ~~ x {:} \ href {. ./binary/modules.html#binary-dataidx}{\mathtt{dataidx}} & \ Rightarrow & \ href {../ syntax / instructions.html # syntax-instr-memory} {\ mathsf {data.drop}} ~ х \\ && | & \ def \ mathdef830 # 1 {\ mathtt {0x # 1}} \ mathdef830 {FC} ~~ 10 {:} \ href {../ binary / values.html # binary-int} {\ def \ mathdef728 # 1 { {\ mathtt {u} # 1}} \ mathdef728 {\ mathtt {32}}} ~~ \ def \ mathdef831 # 1 {\ mathtt {0x # 1}} \ mathdef831 {00} ~~ \ def \ mathdef832 # 1 {\ mathtt {0x # 1}} \ mathdef832 {00} & \ Rightarrow & \ href {../syntax/instructions.html#syntax-instr-memory}{\mathsf{memory.copy}} \\ && | & \ def \ mathdef833 # 1 {\ mathtt {0x # 1}} \ mathdef833 {FC} ~~ 11 {:} \ href {../ binary / values.html # binary-int} {\ def \ mathdef728 # 1 { {\ mathtt {u} # 1}} \ mathdef728 {\ mathtt {32}}} ~~ \ def \ mathdef834 # 1 {\ mathtt {0x # 1}} \ mathdef834 {00} & \ Rightarrow & \ href {.. /syntax/instructions.html#syntax-instr-memory}{\mathsf{memory.fill}} \\ \ end {array} \ end {split} \]

Примечание

В будущих версиях WebAssembly дополнительные нулевые байты, встречающиеся в кодировке \ (\ href {../syntax/instructions.html#syntax-instr-memory} {\ mathsf {memory.size}} \), \ (\ href {../ syntax / instructions.html # syntax-instr-memory} {\ mathsf { memory.grow}} \), \ (\ href {../ syntax / instructions.html # syntax-instr-memory} {\ mathsf {memory.copy}} \) и \ (\ href {../ синтаксис /instructions.html#syntax-instr-memory} {\ mathsf {memory.fill}} \) могут использоваться для индексации дополнительных воспоминаний.

Цифровые инструкции

Все варианты числовых инструкций представлены отдельными байтовыми кодами.

За инструкциями \ (\ href {../ syntax / instructions.html # syntax-instr-numeric} {\ mathsf {const}} \) следует соответствующий литерал.

\ [\ begin {split} \ begin {array} {llclll} \ def \ mathdef723 # 1 {{}} \ mathdef723 {инструкция} & \ href {../ binary / instructions.html # binary-instr} {\ mathtt {instr}} & :: = & \ dots \\ && | & \ def \ mathdef835 # 1 {\ mathtt {0x # 1}} \ mathdef835 {41} ~~ n {:} \ href {../ binary / values.html # binary-int} {\ def \ mathdef736 # 1 { {\ mathtt {i} # 1}} \ mathdef736 {\ mathtt {32}}} & \ Rightarrow & \ href {../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{const}}~n \\ && | & \ def \ mathdef836 # 1 {\ mathtt {0x # 1}} \ mathdef836 {42} ~~ n {:} \ href {../ binary / values.html # binary-int} {\ def \ mathdef737 # 1 { {\ mathtt {i} # 1}} \ mathdef737 {\ mathtt {64}}} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i64}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{const}}~n \\ && | & \ def \ mathdef837 # 1 {\ mathtt {0x # 1}} \ mathdef837 {43} ~~ z {:} \ href {../binary/values.html#binary-float}{\def\mathdef739#1{{\mathtt{f}#1}}\mathdef739{\mathtt{32}}} & \ Rightarrow & \ href {../ синтаксис /types.html#syntax-valtype}{\mathsf{f32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{const}}~z \\ && | & \ def \ mathdef838 # 1 {\ mathtt {0x # 1}} \ mathdef838 {44} ~~ z {:} \ href {../ binary / values.html # binary-float} {\ def \ mathdef740 # 1 { {\ mathtt {f} # 1}} \ mathdef740 {\ mathtt {64}}} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f64}}.\ href {../ syntax / instructions.html # syntax-instr-numeric} {\ mathsf {const}} ~ z \\ \ end {array} \ end {split} \]

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

\ [\ begin {split} \ begin {array} {llclll} \ def \ mathdef723 # 1 {{}} \ mathdef723 {инструкция} & \ href {../ binary / instructions.html # binary-instr} {\ mathtt {instr}} & :: = & \ dots && \ phantom { этого должно быть достаточно} \\ && | & \ def \ mathdef839 # 1 {\ mathtt {0x # 1}} \ mathdef839 {45} & \ Rightarrow & \ href {../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{eqz}} \\ && | & \ def \ mathdef840 # 1 {\ mathtt {0x # 1}} \ mathdef840 {46} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i32}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{eq}} \\ && | & \ def \ mathdef841 # 1 {\ mathtt {0x # 1}} \ mathdef841 {47} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i32}}. \ href { ../syntax/instructions.html # syntax-instr-numeric} {\ mathsf {ne}} \\ && | & \ def \ mathdef842 # 1 {\ mathtt {0x # 1}} \ mathdef842 {48} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i32}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{lt}}\mathsf{\_s} \\ && | & \ def \ mathdef843 # 1 {\ mathtt {0x # 1}} \ mathdef843 {49} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i32}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{lt}}\mathsf{\_u} \\ && | & \ def \ mathdef844 # 1 {\ mathtt {0x # 1}} \ mathdef844 {4A} & \ Rightarrow & \ href {../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{gt}}\mathsf{\_s } \\ && | & \ def \ mathdef845 # 1 {\ mathtt {0x # 1}} \ mathdef845 {4B} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i32}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{gt}}\mathsf{\_u} \\ && | & \ def \ mathdef846 # 1 {\ mathtt {0x # 1}} \ mathdef846 {4C} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i32}}.\ href {../ syntax / instructions.html # syntax-instr-numeric} {\ mathsf {le}} \ mathsf {\ _ s} \\ && | & \ def \ mathdef847 # 1 {\ mathtt {0x # 1}} \ mathdef847 {4D} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i32}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{le}}\mathsf{\_u} \\ && | & \ def \ mathdef848 # 1 {\ mathtt {0x # 1}} \ mathdef848 {4E} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i32}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ge}}\mathsf{\_s} \\ && | & \ def \ mathdef849 # 1 {\ mathtt {0x # 1}} \ mathdef849 {4F} & \ Rightarrow & \ href {../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ge}}\mathsf{\_u } \\ \ end {array} \ end {split} \]

\ [\ begin {split} \ begin {array} {llclll} \ phantom {\ def \ mathdef723 # 1 {{}} \ mathdef723 {инструкция}} & \ phantom {\ href {../ binary / instructions.html # binary-instr} {\ mathtt {instr}}} & \ phantom {:: =} & \ phantom {\ dots} && \ phantom {этого должно быть достаточно} \\ [- 2ex] && | & \ def \ mathdef850 # 1 {\ mathtt {0x # 1}} \ mathdef850 {50} & \ Rightarrow & \ href {../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{eqz}} \\ && | & \ def \ mathdef851 # 1 {\ mathtt {0x # 1}} \ mathdef851 {51} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i64}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{eq}} \\ && | & \ def \ mathdef852 # 1 {\ mathtt {0x # 1}} \ mathdef852 {52} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i64}}. \ href { ../syntax/instructions.html # syntax-instr-numeric} {\ mathsf {ne}} \\ && | & \ def \ mathdef853 # 1 {\ mathtt {0x # 1}} \ mathdef853 {53} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i64}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{lt}}\mathsf{\_s} \\ && | & \ def \ mathdef854 # 1 {\ mathtt {0x # 1}} \ mathdef854 {54} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i64}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{lt}}\mathsf{\_u} \\ && | & \ def \ mathdef855 # 1 {\ mathtt {0x # 1}} \ mathdef855 {55} & \ Rightarrow & \ href {../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{gt}}\mathsf{\_s } \\ && | & \ def \ mathdef856 # 1 {\ mathtt {0x # 1}} \ mathdef856 {56} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i64}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{gt}}\mathsf{\_u} \\ && | & \ def \ mathdef857 # 1 {\ mathtt {0x # 1}} \ mathdef857 {57} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i64}}.\ href {../ syntax / instructions.html # syntax-instr-numeric} {\ mathsf {le}} \ mathsf {\ _ s} \\ && | & \ def \ mathdef858 # 1 {\ mathtt {0x # 1}} \ mathdef858 {58} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i64}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{le}}\mathsf{\_u} \\ && | & \ def \ mathdef859 # 1 {\ mathtt {0x # 1}} \ mathdef859 {59} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i64}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ge}}\mathsf{\_s} \\ && | & \ def \ mathdef860 # 1 {\ mathtt {0x # 1}} \ mathdef860 {5A} & \ Rightarrow & \ href {../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ge}}\mathsf{\_u } \\ \ end {array} \ end {split} \]

\ [\ begin {split} \ begin {array} {llclll} \ phantom {\ def \ mathdef723 # 1 {{}} \ mathdef723 {инструкция}} & \ phantom {\ href {../ binary / instructions.html # binary-instr} {\ mathtt {instr}}} & \ phantom {:: =} & \ phantom {\ dots} && \ phantom {этого должно быть достаточно} \\ [- 2ex] && | & \ def \ mathdef861 # 1 {\ mathtt {0x # 1}} \ mathdef861 {5B} & \ Rightarrow & \ href {../syntax/types.html#syntax-valtype}{\mathsf{f32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{eq}} \\ && | & \ def \ mathdef862 # 1 {\ mathtt {0x # 1}} \ mathdef862 {5C} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f32}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ne}} \\ && | & \ def \ mathdef863 # 1 {\ mathtt {0x # 1}} \ mathdef863 {5D} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f32}}. \ href { ../syntax/instructions.html # syntax-instr-numeric} {\ mathsf {lt}} \\ && | & \ def \ mathdef864 # 1 {\ mathtt {0x # 1}} \ mathdef864 {5E} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f32}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{gt}} \\ && | & \ def \ mathdef865 # 1 {\ mathtt {0x # 1}} \ mathdef865 {5F} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f32}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{le}} \\ && | & \ def \ mathdef866 # 1 {\ mathtt {0x # 1}} \ mathdef866 {60} & \ Rightarrow & \ href {../syntax/types.html#syntax-valtype}{\mathsf{f32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ge}} \\ \ end {array} \ end {split} \]

\ [\ begin {split} \ begin {array} {llclll} \ phantom {\ def \ mathdef723 # 1 {{}} \ mathdef723 {инструкция}} & \ phantom {\ href {../ binary / instructions.html # binary-instr} {\ mathtt {instr}}} & \ phantom {:: =} & \ phantom {\ dots} && \ phantom {этого должно быть достаточно} \\ [- 2ex] && | & \ def \ mathdef867 # 1 {\ mathtt {0x # 1}} \ mathdef867 {61} & \ Rightarrow & \ href {../syntax/types.html#syntax-valtype}{\mathsf{f64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{eq}} \\ && | & \ def \ mathdef868 # 1 {\ mathtt {0x # 1}} \ mathdef868 {62} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f64}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ne}} \\ && | & \ def \ mathdef869 # 1 {\ mathtt {0x # 1}} \ mathdef869 {63} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f64}}. \ href { ../syntax/instructions.html # syntax-instr-numeric} {\ mathsf {lt}} \\ && | & \ def \ mathdef870 # 1 {\ mathtt {0x # 1}} \ mathdef870 {64} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f64}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{gt}} \\ && | & \ def \ mathdef871 # 1 {\ mathtt {0x # 1}} \ mathdef871 {65} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f64}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{le}} \\ && | & \ def \ mathdef872 # 1 {\ mathtt {0x # 1}} \ mathdef872 {66} & \ Rightarrow & \ href {../syntax/types.html#syntax-valtype}{\mathsf{f64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ge}} \\ \ end {array} \ end {split} \]

\ [\ begin {split} \ begin {array} {llclll} \ phantom {\ def \ mathdef723 # 1 {{}} \ mathdef723 {инструкция}} & \ phantom {\ href {../ binary / instructions.html # binary-instr} {\ mathtt {instr}}} & \ phantom {:: =} & \ phantom {\ dots} && \ phantom {этого должно быть достаточно} \\ [- 2ex] && | & \ def \ mathdef873 # 1 {\ mathtt {0x # 1}} \ mathdef873 {67} & \ Rightarrow & \ href {../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{clz}} \\ && | & \ def \ mathdef874 # 1 {\ mathtt {0x # 1}} \ mathdef874 {68} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i32}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ctz}} \\ && | & \ def \ mathdef875 # 1 {\ mathtt {0x # 1}} \ mathdef875 {69} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i32}}. \ href { ../syntax/instructions.html # syntax-instr-numeric} {\ mathsf {popcnt}} \\ && | & \ def \ mathdef876 # 1 {\ mathtt {0x # 1}} \ mathdef876 {6A} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i32}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{add}} \\ && | & \ def \ mathdef877 # 1 {\ mathtt {0x # 1}} \ mathdef877 {6B} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i32}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{sub}} \\ && | & \ def \ mathdef878 # 1 {\ mathtt {0x # 1}} \ mathdef878 {6C} & \ Rightarrow & \ href {../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{mul}} \\ && | & \ def \ mathdef879 # 1 {\ mathtt {0x # 1}} \ mathdef879 {6D} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i32}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{div}}\mathsf{\_s} \\ && | & \ def \ mathdef880 # 1 {\ mathtt {0x # 1}} \ mathdef880 {6E} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i32}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{div}}\mathsf{\_u} \\ && | & \ def \ mathdef881 # 1 {\ mathtt {0x # 1}} \ mathdef881 {6F} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i32}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{rem}}\mathsf{\_s} \\ && | & \ def \ mathdef882 # 1 {\ mathtt {0x # 1}} \ mathdef882 {70} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i32}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{rem}}\mathsf{\_u} \\ && | & \ def \ mathdef883 # 1 {\ mathtt {0x # 1}} \ mathdef883 {71} & \ Rightarrow & \ href {../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{and}} \\ && | & \ def \ mathdef884 # 1 {\ mathtt {0x # 1}} \ mathdef884 {72} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i32}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{or}} \\ && | & \ def \ mathdef885 # 1 {\ mathtt {0x # 1}} \ mathdef885 {73} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i32}}. \ href { ../syntax/instructions.html # syntax-instr-numeric} {\ mathsf {xor}} \\ && | & \ def \ mathdef886 # 1 {\ mathtt {0x # 1}} \ mathdef886 {74} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i32}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{shl}} \\ && | & \ def \ mathdef887 # 1 {\ mathtt {0x # 1}} \ mathdef887 {75} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i32}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{shr}}\mathsf{\_s} \\ && | & \ def \ mathdef888 # 1 {\ mathtt {0x # 1}} \ mathdef888 {76} & \ Rightarrow & \ href {../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{shr}}\mathsf{\_u } \\ && | & \ def \ mathdef889 # 1 {\ mathtt {0x # 1}} \ mathdef889 {77} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i32}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{rotl}} \\ && | & \ def \ mathdef890 # 1 {\ mathtt {0x # 1}} \ mathdef890 {78} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i32}}.\ href {../ syntax / instructions.html # syntax-instr-numeric} {\ mathsf {rotr}} \\ \ end {array} \ end {split} \]

\ [\ begin {split} \ begin {array} {llclll} \ phantom {\ def \ mathdef723 # 1 {{}} \ mathdef723 {инструкция}} & \ phantom {\ href {../ binary / instructions.html # binary-instr} {\ mathtt {instr}}} & \ phantom {:: =} & \ phantom {\ dots} && \ phantom {этого должно быть достаточно} \\ [- 2ex] && | & \ def \ mathdef891 # 1 {\ mathtt {0x # 1}} \ mathdef891 {79} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i64}}.\ href {../ syntax / instructions.html # syntax-instr-numeric} {\ mathsf {clz}} \\ && | & \ def \ mathdef892 # 1 {\ mathtt {0x # 1}} \ mathdef892 {7A} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i64}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ctz}} \\ && | & \ def \ mathdef893 # 1 {\ mathtt {0x # 1}} \ mathdef893 {7B} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i64}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{popcnt}} \\ && | & \ def \ mathdef894 # 1 {\ mathtt {0x # 1}} \ mathdef894 {7C} & \ Rightarrow & \ href {../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{add}} \\ && | & \ def \ mathdef895 # 1 {\ mathtt {0x # 1}} \ mathdef895 {7D} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i64}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{sub}} \\ && | & \ def \ mathdef896 # 1 {\ mathtt {0x # 1}} \ mathdef896 {7E} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i64}}. \ href { ../syntax/instructions.html # syntax-instr-numeric} {\ mathsf {mul}} \\ && | & \ def \ mathdef897 # 1 {\ mathtt {0x # 1}} \ mathdef897 {7F} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i64}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{div}}\mathsf{\_s} \\ && | & \ def \ mathdef898 # 1 {\ mathtt {0x # 1}} \ mathdef898 {80} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i64}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{div}}\mathsf{\_u} \\ && | & \ def \ mathdef899 # 1 {\ mathtt {0x # 1}} \ mathdef899 {81} & \ Rightarrow & \ href {../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{rem}}\mathsf{\_s } \\ && | & \ def \ mathdef900 # 1 {\ mathtt {0x # 1}} \ mathdef900 {82} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i64}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{rem}}\mathsf{\_u} \\ && | & \ def \ mathdef901 # 1 {\ mathtt {0x # 1}} \ mathdef901 {83} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i64}}.\ href {../ syntax / instructions.html # syntax-instr-numeric} {\ mathsf {and}} \\ && | & \ def \ mathdef902 # 1 {\ mathtt {0x # 1}} \ mathdef902 {84} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i64}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{or}} \\ && | & \ def \ mathdef903 # 1 {\ mathtt {0x # 1}} \ mathdef903 {85} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i64}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{xor}} \\ && | & \ def \ mathdef904 # 1 {\ mathtt {0x # 1}} \ mathdef904 {86} & \ Rightarrow & \ href {../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{shl}} \\ && | & \ def \ mathdef905 # 1 {\ mathtt {0x # 1}} \ mathdef905 {87} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i64}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{shr}}\mathsf{\_s} \\ && | & \ def \ mathdef906 # 1 {\ mathtt {0x # 1}} \ mathdef906 {88} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i64}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{shr}}\mathsf{\_u} \\ && | & \ def \ mathdef907 # 1 {\ mathtt {0x # 1}} \ mathdef907 {89} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i64}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{rotl}} \\ && | & \ def \ mathdef908 # 1 {\ mathtt {0x # 1}} \ mathdef908 {8A} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i64}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{rotr}} \\ \ end {array} \ end {split} \]

\ [\ begin {split} \ begin {array} {llclll} \ phantom {\ def \ mathdef723 # 1 {{}} \ mathdef723 {инструкция}} & \ phantom {\ href {../binary/instructions.html#binary-instr}{\mathtt{instr}}} & \ phantom {:: =} & \ phantom {\ dots} && \ phantom {thisshouldbeenough} \\ [- 2ex] && | & \ def \ mathdef909 # 1 {\ mathtt {0x # 1}} \ mathdef909 {8B} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f32}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{abs}} \\ && | & \ def \ mathdef910 # 1 {\ mathtt {0x # 1}} \ mathdef910 {8C} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f32}}.\ href {../ syntax / instructions.html # syntax-instr-numeric} {\ mathsf {neg}} \\ && | & \ def \ mathdef911 # 1 {\ mathtt {0x # 1}} \ mathdef911 {8D} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f32}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ceil}} \\ && | & \ def \ mathdef912 # 1 {\ mathtt {0x # 1}} \ mathdef912 {8E} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f32}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{floor}} \\ && | & \ def \ mathdef913 # 1 {\ mathtt {0x # 1}} \ mathdef913 {8F} & \ Rightarrow & \ href {../syntax/types.html#syntax-valtype}{\mathsf{f32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}} \\ && | & \ def \ mathdef914 # 1 {\ mathtt {0x # 1}} \ mathdef914 {90} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f32}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{nearest}} \\ && | & \ def \ mathdef915 # 1 {\ mathtt {0x # 1}} \ mathdef915 {91} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f32}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{sqrt}} \\ && | & \ def \ mathdef916 # 1 {\ mathtt {0x # 1}} \ mathdef916 {92} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f32}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{add}} \\ && | & \ def \ mathdef917 # 1 {\ mathtt {0x # 1}} \ mathdef917 {93} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f32}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{sub}} \\ && | & \ def \ mathdef918 # 1 {\ mathtt {0x # 1}} \ mathdef918 {94} & \ Rightarrow & \ href {../syntax/types.html#syntax-valtype}{\mathsf{f32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{mul}} \\ && | & \ def \ mathdef919 # 1 {\ mathtt {0x # 1}} \ mathdef919 {95} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f32}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{div}} \\ && | & \ def \ mathdef920 # 1 {\ mathtt {0x # 1}} \ mathdef920 {96} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f32}}. \ href { ../syntax/instructions.html # syntax-instr-numeric} {\ mathsf {min}} \\ && | & \ def \ mathdef921 # 1 {\ mathtt {0x # 1}} \ mathdef921 {97} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f32}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{max}} \\ && | & \ def \ mathdef922 # 1 {\ mathtt {0x # 1}} \ mathdef922 {98} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f32}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{copysign}} \\ \ end {array} \ end {split} \]

\ [\ begin {split} \ begin {array} {llclll} \ phantom {\ def \ mathdef723 # 1 {{}} \ mathdef723 {инструкция}} & \ phantom {\ href {../binary/instructions.html#binary-instr}{\mathtt{instr}}} & \ phantom {:: =} & \ phantom {\ dots} && \ phantom {thisshouldbeenough} \\ [- 2ex] && | & \ def \ mathdef923 # 1 {\ mathtt {0x # 1}} \ mathdef923 {99} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f64}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{abs}} \\ && | & \ def \ mathdef924 # 1 {\ mathtt {0x # 1}} \ mathdef924 {9A} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f64}}.\ href {../ syntax / instructions.html # syntax-instr-numeric} {\ mathsf {neg}} \\ && | & \ def \ mathdef925 # 1 {\ mathtt {0x # 1}} \ mathdef925 {9B} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f64}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{ceil}} \\ && | & \ def \ mathdef926 # 1 {\ mathtt {0x # 1}} \ mathdef926 {9C} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f64}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{floor}} \\ && | & \ def \ mathdef927 # 1 {\ mathtt {0x # 1}} \ mathdef927 {9D} & \ Rightarrow & \ href {../syntax/types.html#syntax-valtype}{\mathsf{f64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}} \\ && | & \ def \ mathdef928 # 1 {\ mathtt {0x # 1}} \ mathdef928 {9E} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f64}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{nearest}} \\ && | & \ def \ mathdef929 # 1 {\ mathtt {0x # 1}} \ mathdef929 {9F} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f64}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{sqrt}} \\ && | & \ def \ mathdef930 # 1 {\ mathtt {0x # 1}} \ mathdef930 {A0} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f64}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{add}} \\ && | & \ def \ mathdef931 # 1 {\ mathtt {0x # 1}} \ mathdef931 {A1} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f64}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{sub}} \\ && | & \ def \ mathdef932 # 1 {\ mathtt {0x # 1}} \ mathdef932 {A2} & \ Rightarrow & \ href {../syntax/types.html#syntax-valtype}{\mathsf{f64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{mul}} \\ && | & \ def \ mathdef933 # 1 {\ mathtt {0x # 1}} \ mathdef933 {A3} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f64}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{div}} \\ && | & \ def \ mathdef934 # 1 {\ mathtt {0x # 1}} \ mathdef934 {A4} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f64}}. \ href { ../syntax/instructions.html # syntax-instr-numeric} {\ mathsf {min}} \\ && | & \ def \ mathdef935 # 1 {\ mathtt {0x # 1}} \ mathdef935 {A5} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f64}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{max}} \\ && | & \ def \ mathdef936 # 1 {\ mathtt {0x # 1}} \ mathdef936 {A6} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f64}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{copysign}} \\ \ end {array} \ end {split} \]

\ [\ begin {split} \ begin {array} {llclll} \ phantom {\ def \ mathdef723 # 1 {{}} \ mathdef723 {инструкция}} & \ phantom {\ href {../binary/instructions.html#binary-instr}{\mathtt{instr}}} & \ phantom {:: =} & \ phantom {\ dots} && \ phantom {thisshouldbeenough} \\ [- 2ex] && | & \ def \ mathdef937 # 1 {\ mathtt {0x # 1}} \ mathdef937 {A7} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i32}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{wrap}}\mathsf{\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{i64} } \\ && | & \ def \ mathdef938 # 1 {\ mathtt {0x # 1}} \ mathdef938 {A8} & \ Rightarrow & \ href {../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}\mathsf{\_ } \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f32}} \ mathsf {\ _ s} \\ && | & \ def \ mathdef939 # 1 {\ mathtt {0x # 1}} \ mathdef939 {A9} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i32}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}\mathsf{\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{f32} } \ mathsf {\ _ u} \\ && | & \ def \ mathdef940 # 1 {\ mathtt {0x # 1}} \ mathdef940 {AA} & \ Rightarrow & \ href {../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}\mathsf{\_ } \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f64}} \ mathsf {\ _ s} \\ && | & \ def \ mathdef941 # 1 {\ mathtt {0x # 1}} \ mathdef941 {AB} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i32}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}\mathsf{\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{f64} } \ mathsf {\ _ u} \\ && | & \ def \ mathdef942 # 1 {\ mathtt {0x # 1}} \ mathdef942 {AC} & \ Rightarrow & \ href {../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{extend}}\mathsf{\_ } \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i32}} \ mathsf {\ _ s} \\ && | & \ def \ mathdef943 # 1 {\ mathtt {0x # 1}} \ mathdef943 {AD} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i64}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{extend}}\mathsf{\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{i32} } \ mathsf {\ _ u} \\ && | & \ def \ mathdef944 # 1 {\ mathtt {0x # 1}} \ mathdef944 {AE} & \ Rightarrow & \ href {../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}\mathsf{\_ } \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f32}} \ mathsf {\ _ s} \\ && | & \ def \ mathdef945 # 1 {\ mathtt {0x # 1}} \ mathdef945 {AF} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i64}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}\mathsf{\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{f32} } \ mathsf {\ _ u} \\ && | & \ def \ mathdef946 # 1 {\ mathtt {0x # 1}} \ mathdef946 {B0} & \ Rightarrow & \ href {../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}\mathsf{\_ } \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f64}} \ mathsf {\ _ s} \\ && | & \ def \ mathdef947 # 1 {\ mathtt {0x # 1}} \ mathdef947 {B1} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i64}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}\mathsf{\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{f64} } \ mathsf {\ _ u} \\ && | & \ def \ mathdef948 # 1 {\ mathtt {0x # 1}} \ mathdef948 {B2} & \ Rightarrow & \ href {../syntax/types.html#syntax-valtype}{\mathsf{f32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{convert}}\mathsf{\_ } \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i32}} \ mathsf {\ _ s} \\ && | & \ def \ mathdef949 # 1 {\ mathtt {0x # 1}} \ mathdef949 {B3} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f32}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{convert}}\mathsf{\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{i32} } \ mathsf {\ _ u} \\ && | & \ def \ mathdef950 # 1 {\ mathtt {0x # 1}} \ mathdef950 {B4} & \ Rightarrow & \ href {../syntax/types.html#syntax-valtype}{\mathsf{f32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{convert}}\mathsf{\_ } \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i64}} \ mathsf {\ _ s} \\ && | & \ def \ mathdef951 # 1 {\ mathtt {0x # 1}} \ mathdef951 {B5} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f32}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{convert}}\mathsf{\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{i64} } \ mathsf {\ _ u} \\ && | & \ def \ mathdef952 # 1 {\ mathtt {0x # 1}} \ mathdef952 {B6} & \ Rightarrow & \ href {../syntax/types.html#syntax-valtype}{\mathsf{f32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{demote}}\mathsf{\_ } \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f64}} \\ && | & \ def \ mathdef953 # 1 {\ mathtt {0x # 1}} \ mathdef953 {B7} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f64}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{convert}}\mathsf{\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{i32} } \ mathsf {\ _ s} \\ && | & \ def \ mathdef954 # 1 {\ mathtt {0x # 1}} \ mathdef954 {B8} & \ Rightarrow & \ href {../syntax/types.html#syntax-valtype}{\mathsf{f64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{convert}}\mathsf{\_ } \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i32}} \ mathsf {\ _ u} \\ && | & \ def \ mathdef955 # 1 {\ mathtt {0x # 1}} \ mathdef955 {B9} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f64}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{convert}}\mathsf{\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{i64} } \ mathsf {\ _ s} \\ && | & \ def \ mathdef956 # 1 {\ mathtt {0x # 1}} \ mathdef956 {BA} & \ Rightarrow & \ href {../syntax/types.html#syntax-valtype}{\mathsf{f64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{convert}}\mathsf{\_ } \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i64}} \ mathsf {\ _ u} \\ && | & \ def \ mathdef957 # 1 {\ mathtt {0x # 1}} \ mathdef957 {BB} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f64}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{promote}}\mathsf{\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{f32} } \\ && | & \ def \ mathdef958 # 1 {\ mathtt {0x # 1}} \ mathdef958 {BC} & \ Rightarrow & \ href {../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{reinterpret}}\mathsf{\_ } \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f32}} \\ && | & \ def \ mathdef959 # 1 {\ mathtt {0x # 1}} \ mathdef959 {BD} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i64}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{reinterpret}}\mathsf{\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{f64} } \\ && | & \ def \ mathdef960 # 1 {\ mathtt {0x # 1}} \ mathdef960 {BE} & \ Rightarrow & \ href {../syntax/types.html#syntax-valtype}{\mathsf{f32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{reinterpret}}\mathsf{\_ } \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i32}} \\ && | & \ def \ mathdef961 # 1 {\ mathtt {0x # 1}} \ mathdef961 {BF} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f64}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{reinterpret}}\mathsf{\_}\href{../syntax/types.html#syntax-valtype}{\mathsf{i64} } \\ \ end {array} \ end {split} \]

\ [\ begin {split} \ begin {array} {llclll} \ phantom {\ def \ mathdef723 # 1 {{}} \ mathdef723 {инструкция}} & \ phantom {\ href {../binary/instructions.html#binary-instr}{\mathtt{instr}}} & \ phantom {:: =} & \ phantom {\ dots} && \ phantom {thisshouldbeenough} \\ [- 2ex] && | & \ def \ mathdef962 # 1 {\ mathtt {0x # 1}} \ mathdef962 {C0} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i32}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{extend}}\mathsf{8\_s} \\ && | & \ def \ mathdef963 # 1 {\ mathtt {0x # 1}} \ mathdef963 {C1} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i32}}.\ href {../ syntax / instructions.html # syntax-instr-numeric} {\ mathsf {extend}} \ mathsf {16 \ _s} \\ && | & \ def \ mathdef964 # 1 {\ mathtt {0x # 1}} \ mathdef964 {C2} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i64}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{extend}}\mathsf{8\_s} \\ && | & \ def \ mathdef965 # 1 {\ mathtt {0x # 1}} \ mathdef965 {C3} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i64}}. \ href { ../syntax/instructions.html#syntax-instr-numeric}{\mathsf{extend}}\mathsf{16\_s} \\ && | & \ def \ mathdef966 # 1 {\ mathtt {0x # 1}} \ mathdef966 {C4} & \ Rightarrow & \ href {../syntax/types.html#syntax-valtype} {\ mathsf {i64}}. \ href {../ syntax / instructions.html # syntax-instr-numeric} {\ mathsf {extend}} \ mathsf {32 \ _s} \\ \ end {array} \ end {split} \]

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

\ [\ begin {split} \ begin {array} {llclll} \ def \ mathdef723 # 1 {{}} \ mathdef723 {инструкция} & \ href {../ binary / instructions.html # binary-instr} {\ mathtt {instr}} & :: = & \ dots && \ phantom { этого должно быть достаточно} \\ && | & \ def \ mathdef967 # 1 {\ mathtt {0x # 1}} \ mathdef967 {FC} ~~ 0 {:} \ href {../binary/values.html#binary-int}{\def\mathdef728#1{{\mathtt{u}#1}}\mathdef728{\mathtt{32}}} & \ Rightarrow & \ href {../ синтаксис /types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}\mathsf{\_sat\_} \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f32}} \ mathsf {\ _ s} \\ && | & \ def \ mathdef968 # 1 {\ mathtt {0x # 1}} \ mathdef968 {FC} ~~ 1 {:} \ href {../ binary / values.html # binary-int} {\ def \ mathdef728 # 1 { {\ mathtt {u} # 1}} \ mathdef728 {\ mathtt {32}}} & \ Rightarrow & \ href {../syntax/types.html#syntax-valtype}{\mathsf{i32}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}\mathsf{\_sat \ _} \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f32}} \ mathsf {\ _ u} \\ && | & \ def \ mathdef969 # 1 {\ mathtt {0x # 1}} \ mathdef969 {FC} ~~ 2 {:} \ href {../ binary / values.html # binary-int} {\ def \ mathdef728 # 1 { {\ mathtt {u} # 1}} \ mathdef728 {\ mathtt {32}}} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i32}}. \ href { ../ syntax / instructions.html # syntax-instr-numeric} {\ mathsf {trunc}} \ mathsf {\ _ sat \ _} \ href {../syntax/types.html#syntax-valtype}{\mathsf{f64}}\mathsf{\_s} \\ && | & \ def \ mathdef970 # 1 {\ mathtt {0x # 1}} \ mathdef970 {FC} ~~ 3 {:} \ href {../ binary / values.html # binary-int} {\ def \ mathdef728 # 1 { {\ mathtt {u} # 1}} \ mathdef728 {\ mathtt {32}}} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i32}}. \ href { ../ syntax / instructions.html # syntax-instr-numeric} {\ mathsf {trunc}} \ mathsf {\ _ sat \ _} \ href {../ syntax / types.html # syntax-valtype} {\ mathsf { f64}} \ mathsf {\ _ u} \\ && | & \ def \ mathdef971 # 1 {\ mathtt {0x # 1}} \ mathdef971 {FC} ~~ 4 {:} \ href {../binary/values.html#binary-int}{\def\mathdef728#1{{\mathtt{u}#1}}\mathdef728{\mathtt{32}}} & \ Rightarrow & \ href {../ синтаксис /types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}\mathsf{\_sat\_} \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f32}} \ mathsf {\ _ s} \\ && | & \ def \ mathdef972 # 1 {\ mathtt {0x # 1}} \ mathdef972 {FC} ~~ 5 {:} \ href {../ binary / values.html # binary-int} {\ def \ mathdef728 # 1 { {\ mathtt {u} # 1}} \ mathdef728 {\ mathtt {32}}} & \ Rightarrow & \ href {../syntax/types.html#syntax-valtype}{\mathsf{i64}}.\href{../syntax/instructions.html#syntax-instr-numeric}{\mathsf{trunc}}\mathsf{\_sat \ _} \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {f32}} \ mathsf {\ _ u} \\ && | & \ def \ mathdef973 # 1 {\ mathtt {0x # 1}} \ mathdef973 {FC} ~~ 6 {:} \ href {../ binary / values.html # binary-int} {\ def \ mathdef728 # 1 { {\ mathtt {u} # 1}} \ mathdef728 {\ mathtt {32}}} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i64}}. \ href { ../ syntax / instructions.html # syntax-instr-numeric} {\ mathsf {trunc}} \ mathsf {\ _ sat \ _} \ href {../syntax/types.html#syntax-valtype}{\mathsf{f64}}\mathsf{\_s} \\ && | & \ def \ mathdef974 # 1 {\ mathtt {0x # 1}} \ mathdef974 {FC} ~~ 7 {:} \ href {../ binary / values.html # binary-int} {\ def \ mathdef728 # 1 { {\ mathtt {u} # 1}} \ mathdef728 {\ mathtt {32}}} & \ Rightarrow & \ href {../ syntax / types.html # syntax-valtype} {\ mathsf {i64}}. \ href { ../ syntax / instructions.html # syntax-instr-numeric} {\ mathsf {trunc}} \ mathsf {\ _ sat \ _} \ href {../ syntax / types.html # syntax-valtype} {\ mathsf { f64}} \ mathsf {\ _ u} \\ \ end {array} \ end {split} \]

Выражения

Выражения кодируются последовательностью их инструкций, заканчивающейся явным кодом операции \ (\ def \ mathdef975 # 1 {\ mathtt {0x # 1}} \ mathdef975 {0B} \) для \ (\ href {.\ ast ~ \ href {../ syntax / instructions.html # syntax-instr-control} {\ mathsf {end}} \\ \ end {array} \ end {split} \]

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

В этой главе описаны все арифметические и логические инструкции 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, что описано в следующем разделе этой главы.

Само рандомизирующиеся адреса инструкций устаревшего двоичного кода x86

[4]

С. Андерсен. Часть 3: Технологии защиты памяти. В

В.Абелла, редактор, Изменения в функциональности Windows XP

Service Pack 2. Microsoft TechNet, 2004. http: // technet.

microsoft.com/en-us/library/bb457155.aspx.

[5]

Э. Г. Баррантес, Д. Х. Экли, Т. С. Палмер, Д. Стефанович,

и Д. Д. Зови. Эмуляция рандомизированного набора команд до

предотвращает атаки с внедрением двоичного кода. В Proc. 10-я конференция ACM.

по безопасности компьютеров и связи, страницы 281–289,

2003.

[6]

Л. Бауэр, Дж. Лигатти и Д. Уокер. Составление политик безопасности

с помощью Polymer. В Proc. ACM SIGPLAN Conf. на

Проектирование и реализация языков программирования, страницы

305–314, 2005.

[7]

Э. Д. Бергер и Б. Г. Цорн. DieHard: Вероятностная память

безопасность для небезопасных языков. В Proc. ACM SIGPLAN Conf.

по проектированию и реализации языков программирования,

страниц 158–168, 2006.

[8]

С. Бхаткар и Р. Секар. Рандомизация пространства данных. В

Proc. Int. Конф. по обнаружению вторжений и вредоносного ПО и

Оценка уязвимости, страницы 1–22, 2008 г.

[9]

С. Бхаткар, Д. К. ДюВарни и Р. Секар. Обфускация адреса

: эффективный подход к борьбе с широким спектром эксплойтов ошибок памяти

. В Proc. 12-й симпозиум по безопасности USENIX

, страницы 105–120, 2003 г.

[10]

S.Бхаткар, Р. Секар и Д. К. ДюВарни. Эффективные

техники комплексной защиты от ошибок памяти

эксплойтов. В Proc. 14-й симпозиум по безопасности USENIX, страницы

255–270, 2005.

[11]

Д. Бруски, Л. Кавалларо и А. Ланци. Диверсифицированный процесс

реплик для защиты от эксплойтов ошибок памяти. В Proc. IEEE

Int. Performance, Computing, and Communications Conf.,

pages 434–441, 2007.

[12]

E.Бьюкенен, Р. Ремер, Х. Шахем и С. Сэвидж. Когда

хорошие инструкции становятся плохими: Обобщение ориентированного на возврат программирования

на RISC. В Proc. 15-я конференция ACM. на

Компьютерная и коммуникационная безопасность, страницы 27–38,

2008.

[13]

К. Кадар, В. Ганеш, П. М. Павловски, Д. Л. Дилл и Д. Р.

Энглер. EXE: автоматическая генерация данных о смерти. В

Proc. 13-я конференция ACM. по компьютерам и коммуникациям

Безопасность, страницы 322–335, 2006.

[14]

К. Кадар, П. Акритидис, М. Коста, Ж.-П. Мартин и М. Кастро.

Рандомизация данных. Технический отчет MSR-TR-2008-120,

Microsoft Research, 2008.

[15]

С. Чековей, Л. Дави, А. Дмитриенко, А.-Р. Sadeghi,

H. Shacham и M. Winandy. Возвратное программирование

без возврата. В Proc. 17-я конференция ACM. on Computer and

Communications Security, страницы 559–572, 2010.

[16]

F.Чен и Г. Роосу. Java-MOP: ориентированная на мониторинг среда программирования

для Java. В Proc. 11-е межд. Конф.

об инструментах и ​​алгоритмах построения и анализа

систем, страницы 546–550, 2005 г.

[17]

П. Чен, Х. Сяо, X. Шен, X. Инь, Б. Мао, и Л. Се.

DROP: обнаружение вредоносного программного кода, ориентированного на возврат.

. В Proc. 5-й Int. Конф. по безопасности информационных систем,

стр. 163–177, 2009.

[18]

W. Cheng, Q. Zhao, B. Yu и S. Hiroshige. TaintTrace:

Эффективная трассировка потоков с динамической двоичной перезаписью. В Proc.

11-й симпозиум IEEE по компьютерам и коммуникациям,

стр. 749–754, 2006 г.

[19]

М. Чу и Д. Сонг. Снижение переполнения буфера за счет

рандомизации операционной системы. Технический отчет CMU-CS-

02-197, Университет Карнеги-Меллона, 2002.

[20]

Команда Corelan.Мона, 2012. http://redmine.corelan.be/

проектов / мона.

[21]

К. Коуэн, С. Битти, Дж. Йохансен и П. Вагл.

PointGuard

TM

: защита указателей от переполнения буфера

уязвимостей. В Proc. 12-й симпозиум по безопасности USENIX,

страницы 91–104, 2003.

[22]

Б. Кокс, Д. Эванс, А. Филипи, Дж. Роуэнхилл, У. Ху,

Дж. Дэвидсон, Дж. Найт , А. Нгуен-Туонг и Дж. Хисер.

N-Variant Systems: бессекретная структура для обеспечения безопасности

посредством разнообразия.В Proc. 15-й симпозиум по безопасности USENIX,

2006.

[23]

L. Davi, A.-R. Садеги и М. Винанди. ROPdefender: средство обнаружения

для защиты от атак программирования

, ориентированных на возврат. В Proc. 6-й симпозиум ACM по информации,

Компьютерная и коммуникационная безопасность, страницы 40–51,

2011.

[24]

У. Дреппер. Улучшения безопасности в Red Hat Enterprise

Linux (кроме SELinux), версия 1.6, раздел 5: Позиция

независимых исполняемых файлов, декабрь 2005 г. http: // www.

akkadia.org/drepper/nonselsec.pdf.

[25]

Ú. Эрлингссон и Ф. Б. Шнайдер. Применение SASI

политик безопасности: ретроспектива. В Proc. New Security

Paradigms Workshop, 1999.

[26]

С. Форрест, А. Сомаяджи и Д. Х. Экли. Создание разнообразных компьютерных систем

. В Proc. 6-й семинар по актуальным темам в операционных системах

, стр. 67, 1997.

[27]

П. Годфроид, М. Ю. Левин и Д. Мольнар. Автоматизированное тестирование фаззинга

whitebox. В Proc. 15-й ежегодный симпозиум по безопасности сетей и

распределенных систем, 2008 г.

[28]

Hex-Rays. Дизассемблер и отладчик IDA Pro, 2012.

http://www.hex-rays.com/idapro.

[29]

Дж. Д. Хисер, А. Нгуен-Туонг, М. Ко, М. Холл и Дж. У.

Дэвидсон. ILR: Куда пропали мои гаджеты? В Proc. IEEE

Симпозиум по безопасности и конфиденциальности, страницы 571–585, 2012.

[30]

Г. Хоглунд и Дж. Батлер. Руткиты: подрыв ядра Windows

, глава 4: Вековое искусство перехвата, страницы 73–

74. Pearson Education, Inc., 2006.

[31]

Дж. К. Холлингсворт, Б. П. Миллер и Дж. Каргилль. Программный инструментарий Dynamic

для масштабируемых инструментов производительности. В

Proc. Scalable High Performance Computing Conf., Страницы

841–850, 1994.

[32]

G.Хант и Д. Брубахер. Объезды: бинарный перехват

функций Win32. В Proc. 3-й симпозиум USENIX Windows NT

, 1999.

[33]

X. Jiang, H. J. Wang, D. Xu, and Y.-M. Ван. RandSys:

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

рандомизация интерфейса. В Proc. 26-я IEEE Int. Симпозиум

по надежным распределенным системам, страницы 209–218, 2007.

[34]

G. S. Kc, A. D. Keromytis и V.Превелакис. Противодействие атакам с внедрением кода

с рандомизацией набора команд. В

Proc. 10-я конференция ACM. по компьютерам и коммуникациям

Безопасность, страницы 272–280, 2003.

[35]

В. Кириански, Д. Брюнинг и С. Амарасингхе. Secure

8051 Руководство по набору инструкций: коды операций

Шестнадцатеричный
Код
Байт Мнемоника Операнды
00 1 NOP
01 2 AJMP адрес 11
02 3 LJMP адрес16
03 1 RR A
04 1 INC A
05 2 INC прямой
06 1 INC @ R0
07 1 INC @ R1
08 1 INC R0
09 1 INC R1
0A 1 INC R2
0B 1 INC R3
0C 1 INC R4
0D 1 INC R5
0E 1 INC R6
0F 1 INC R7
10 3 JBC бит, смещение
11 2 ACALL адрес 11
12 3 LCALL адрес16
13 1 RRC A
14 1 дек A
15 2 дек прямой
16 1 дек @ R0
17 1 дек @ R1
18 1 дек R0
19 1 дек R1
1A 1 дек R2
1 дек R3
1 дек R4
1D 1 дек R5
1E 1 дек R6
1 этаж 1 дек R7
20 3 JB бит, смещение
21 2 AJMP адрес 11
22 1 RET
23 1 RL A
24 2 ДОБАВИТЬ А, #immed
25 2 ДОБАВИТЬ А, прямой
26 1 ДОБАВИТЬ А, @ R0
27 1 ДОБАВИТЬ А, @ R1
28 1 ДОБАВИТЬ A, R0
29 1 ДОБАВИТЬ A, R1
2A 1 ДОБАВИТЬ А, R2
2B 1 ДОБАВИТЬ A, R3
2C 1 ДОБАВИТЬ А, R4
2D 1 ДОБАВИТЬ A, R5
2E 1 ДОБАВИТЬ А, R6
2F 1 ДОБАВИТЬ A, R7
30 3 JNB бит, смещение
31 2 ACALL адрес 11
32 1 РЕТИ
33 1 RLC A
34 2 ADDC А, #immed
35 2 ADDC А, прямой
36 1 ADDC А, @ R0
37 1 ADDC А, @ R1
38 1 ADDC A, R0
39 1 ADDC A, R1
3A 1 ADDC А, R2
3B 1 ADDC A, R3
3C 1 ADDC А, R4
3D 1 ADDC A, R5
3E 1 ADDC А, R6
3F 1 ADDC A, R7
40 2 JC смещение
41 2 AJMP адрес 11
42 2 ORL прямой, A
43 3 ORL прямой, #immed
44 2 ORL А, #immed
45 2 ORL А, прямой
46 1 ORL А, @ R0
47 1 ORL А, @ R1
48 1 ORL A, R0
49 1 ORL A, R1
4A 1 ORL А, R2
4B 1 ORL A, R3
4C 1 ORL А, R4
4D 1 ORL A, R5
4E 1 ORL А, R6
4 этаж 1 ORL A, R7
50 2 JNC смещение
51 2 ACALL адрес 11
52 2 ANL прямой, A
53 3 ANL прямой, #immed
54 2 ANL А, #immed
55 2 ANL А, прямой
56 1 ANL А, @ R0
57 1 ANL А, @ R1
58 1 ANL A, R0
59 1 ANL A, R1
5A 1 ANL А, R2
1 ANL A, R3
5C 1 ANL А, R4
5D 1 ANL A, R5
5E 1 ANL А, R6
5F 1 ANL A, R7
60 2 JZ смещение
61 2 AJMP адрес 11
62 2 XRL прямой, A
63 3 XRL прямой, #immed
64 2 XRL А, #immed
65 2 XRL А, прямой
66 1 XRL А, @ R0
67 1 XRL А, @ R1
68 1 XRL A, R0
69 1 XRL A, R1
6A 1 XRL А, R2
1 XRL A, R3
6C 1 XRL А, R4
6D 1 XRL A, R5
6E 1 XRL А, R6
6F 1 XRL A, R7
70 2 JNZ смещение
71 2 ACALL адрес 11
72 2 ORL С, бит
73 1 JMP @ A + DPTR
74 2 MOV А, #immed
75 3 MOV прямой, #immed
76 2 MOV @ R0, #immed
77 2 MOV @ R1, #immed
78 2 MOV R0, #immed
79 2 MOV R1, #immed
7A 2 MOV R2, #immed
7B 2 MOV R3, #immed
7C 2 MOV R4, #immed
7D 2 MOV R5, #immed
7E 2 MOV R6, #immed
7F 2 MOV R7, #immed
Шестнадцатеричный
Код
Байт Мнемоника Операнды
80 2 SJMP смещение
81 2 AJMP адрес 11
82 2 ANL С, бит
83 1 MOVC А, @ A + PC
84 1 DIV AB
85 3 MOV прямой, прямой
86 2 MOV прямой, @ R0
87 2 MOV прямой, @ R1
88 2 MOV прямой, R0
89 2 MOV прямой, R1
8A 2 MOV прямой, R2
2 MOV прямой, R3
8C 2 MOV прямой, R4
8D 2 MOV прямой, R5
8E 2 MOV прямой, R6
8F 2 MOV прямой, R7
90 3 MOV DPTR, #immed
91 2 ACALL адрес 11
92 2 MOV бит, C
93 1 MOVC А, @ A + DPTR
94 2 ПОДБ А, #immed
95 2 ПОДБ А, прямой
96 1 ПОДБ А, @ R0
97 1 ПОДБ А, @ R1
98 1 ПОДБ A, R0
99 1 ПОДБ A, R1
9A 1 ПОДБ А, R2
1 ПОДБ A, R3
9C 1 ПОДБ А, R4
9D 1 ПОДБ A, R5
9E 1 ПОДБ А, R6
9F 1 ПОДБ A, R7
A0 2 ORL С, / бит
A1 2 AJMP адрес 11
A2 2 MOV С, бит
A3 1 INC DPTR
A4 1 МУЛ AB
A5 зарезервировано
A6 2 MOV @ R0, прямой
A7 2 MOV @ R1, прямой
A8 2 MOV R0, прямой
A9 2 MOV R1, прямой
AA 2 MOV R2, прямой
AB 2 MOV R3, прямой
AC 2 MOV R4, прямой
н.э. 2 MOV R5, прямой
AE 2 MOV R6, прямой
AF 2 MOV R7, прямой
B0 2 ANL С, / бит
B1 2 ACALL адрес 11
B2 2 CPL бит
B3 1 CPL С
B4 3 CJNE А, #immed, смещение
B5 3 CJNE А, прямой, смещение
B6 3 CJNE @ R0, #immed, смещение
B7 3 CJNE @ R1, #immed, смещение
B8 3 CJNE R0, #immed, смещение
B9 3 CJNE R1, #immed, смещение
BA 3 CJNE R2, #immed, смещение
BB 3 CJNE R3, #immed, смещение
BC 3 CJNE R4, #immed, смещение
BD 3 CJNE R5, #immed, смещение
BE 3 CJNE R6, #immed, смещение
BF 3 CJNE R7, #immed, смещение
C0 2 НАЖАТЬ прямой
C1 2 AJMP адрес 11
C2 2 CLR бит
C3 1 CLR С
C4 1 СВОП A
C5 2 XCH А, прямой
C6 1 XCH А, @ R0
C7 1 XCH А, @ R1
C8 1 XCH A, R0
C9 1 XCH A, R1
CA 1 XCH А, R2
CB 1 XCH A, R3
CC 1 XCH А, R4
CD 1 XCH A, R5
CE 1 XCH А, R6
CF 1 XCH A, R7
D0 2 ПОП прямой
D1 2 ACALL адрес 11
D2 2 СЭТБ бит
D3 1 СЭТБ С
D4 1 DA A
D5 3 DJNZ прямой, смещение
D6 1 XCHD А, @ R0
D7 1 XCHD А, @ R1
D8 2 DJNZ R0, смещение
D9 2 DJNZ R1, смещение
DA 2 DJNZ R2, смещение
DB 2 DJNZ R3, смещение
DC 2 DJNZ R4, смещение
DD 2 DJNZ R5, смещение
DE 2 DJNZ R6, смещение
DF 2 DJNZ R7, смещение
E0 1 MOVX А, @DPTR
E1 2 AJMP адрес 11
E2 1 MOVX А, @ R0
E3 1 MOVX А, @ R1
E4 1 CLR A
E5 2 MOV А, прямой
E6 1 MOV А, @ R0
E7 1 MOV А, @ R1
E8 1 MOV A, R0
E9 1 MOV A, R1
EA 1 MOV А, R2
EB 1 MOV A, R3
EC 1 MOV А, R4
ED 1 MOV A, R5
EE 1 MOV А, R6
EF 1 MOV A, R7
F0 1 MOVX @DPTR, A
F1 2 ACALL адрес 11
F2 1 MOVX @ R0, A
F3 1 MOVX @ R1, A
F4 1 CPL A
F5 2 MOV прямой, A
F6 1 MOV @ R0, A
F7 1 MOV @ R1, A
F8 1 MOV R0, А
F9 1 MOV R1, А
FA 1 MOV R2, А
FB 1 MOV R3, А
FC 1 MOV R4, А
FD 1 MOV R5, А
FE 1 MOV R6, А
FF 1 MOV R7, А
.

Добавить комментарий

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