Коды для НДС

Код операции

Эта статья об инструкциях; о системе команд в целом см. Машинный код.

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

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

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

Программные наборы инструкций

Опкод можно найти и в так называемом байт-коде и прочих представлениях, разработанных скорее для программных интерпретаторов, чем для аппаратного обеспечения. Эти программные наборы инструкций часто задействуют несколько более высокоуровневые типы данных и операции, чем большинство аппаратных аналогов, но, тем не менее, они основаны на тех же принципах. Примерами может послужить Java Virtual Machine (JVM) языка программирования Java, байт-код, используемый в Emacs для скомпилированного кода Лисп и многие другие.

В связи с изменениями законодательства с 2015 года и утверждением новой формы декларации по НДС возникла необходимость в корректировке действующего перечня кодов видов операций, которые применяются для ведения журнала учета полученных и выставленных счетов-фактур, книги покупок и книги продаж. Планировалось, что замена Приказа ФНС России № ММВ-7-3/83 от 14 февраля 2012 г., которым утверждены действующие в настоящее время коды, произойдет с IV квартала 2015 года. Однако Приказ ФНС России № ММВ-7-3/136 от 14 марта 2016 г., которым утверждены новые коды, прошел регистрацию в Минюсте России только в апреле текущего года. Применять новые коды нужно с 1 июля 2016 года (т.е. с отчетности за III квартал). Чтобы не допустить ошибок, воспользуйтесь информацией из подготовленного нами обзора новых и старых кодов.

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

  • перечень кодов видов операций, утв. Приказом ФНС России № ММВ-7-3/83 от 14 февраля 2012 г.;
  • перечни дополнительных кодов видов операций, приведенные в письмах ФНС России № ГД-4-3/5757 от 7 апреля 2015 г., № ГД-4-3/794 от 22 января 2015 г.

С 1 июля 2016 года (т.е. с III квартала) их нужно проставлять в соответствии с Приказом ФНС России № ММВ-7-3/136 от 14 марта 2016 г. При этом не все коды остались прежними: некоторые коды исключены, а для ряда операций добавлены отдельные коды. Сравнение старых и новых кодов – в следующей таблице.

Вид операции

Код операции

Примечание для кодов, применяемых с 1 июля 2016 года

в настоящее время

с 1 июля 2016 года

Отгрузка (передача) или приобретение товаров, работ, услуг (включая посреднические услуги), имущественных прав, в том числе операции, облагаемые НДС по ставке 0 процентов
Оплата, частичная оплата (полученная или переданная) в счет предстоящих поставок товаров (выполнения работ, оказания услуг (включая посреднические услуги)), передачи имущественных прав
Возврат покупателем товаров продавцу или получение продавцом возвращенных покупателем товаров (за исключением возврата от граждан и лиц, не являющихся плательщиками НДС)
Отгрузка (передача) или приобретение товаров, работ, услуг (за исключением посреднических услуг), имущественных прав на основе договора комиссии (агентского договора – в случае, если агент совершает действия от своего имени)
Оплата, частичная оплата (полученная или переданная) в счет предстоящих поставок товаров (выполнения работ, оказания услуг (за исключением посреднических услуг)), передачи имущественных прав на основе договора комиссии (агентского договора – в случае, если агент совершает действия от своего имени)
Операции, совершаемые налоговыми агентами, перечисленные в ст. 161 Налогового кодекса РФ
Операции, перечисленные в пп. 2 п. 1 ст. 146 Налогового кодекса РФ
Операции, перечисленные в пп. 3 п. 1 ст. 146 Налогового кодекса РФ
Получение сумм, указанных в ст. 162 Налогового кодекса РФ
Отгрузка (передача) или получение товаров, работ, услуг, имущественных прав на безвозмездной основе
Отгрузка (передача) или приобретение товаров, имущественных прав, перечисленных в п. 3, 4, 5.1 ст. 154 Налогового кодекса РФ
Оплата, частичная оплата (полученная или переданная) в счет предстоящих поставок товаров, передачи имущественных прав, перечисленных в п. 3, 4, 5.1 ст. 154, пп. 1-4 ст. 155 Налогового кодекса РФ
Проведение подрядными организациями (застройщиками или техническими заказчиками) капитального строительства, модернизации (реконструкции) объектов недвижимости, а также при регистрации сводных счетов-фактур, передаваемых инвесторам Применяется также при передаче указанными лицами (приобретении) объектов завершенного (незавершенного) капитального строительства, оборудования, материалов в рамках исполнения договоров по капитальному строительству (модернизации, реконструкции)
Отгрузка (передача) или приобретение товаров, имущественных прав, перечисленных в п. 1-4 ст. 155 Налогового кодекса РФ
Составление (получение) счета-фактуры комиссионером (агентом) при реализации (получении) товаров (работ, услуг), имущественных прав от своего имени, в котором отражены данные в отношении собственных товаров (работ, услуг), имущественных прав и данные в отношении товаров (работ, услуг), имущественных прав, реализуемых (приобретаемых) по договору комиссии (агентскому договору)

Получение продавцом товаров, возвращенных покупателем, не являющимся налогоплательщиком НДС (за исключением возврата от граждан) Применяется также при:

– возврате товаров покупателем, который освобожден от исполнения обязанностей по уплате НДС, включая частичный возврат (в т. ч. лицами, не являющимися плательщиками НДС);

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

Получение продавцом товаров, возвращенных покупателем-гражданином, оплаченных наличным расчетом Применяется независимо от формы оплаты, а также при отказе гражданина от товаров (работ, услуг), в счет которых была получена предоплата, в случае изменения условий либо расторжения соответствующего договора и возврата соответствующих сумм авансовых платежей
Составление или получение корректировочного счета-фактуры в связи с изменением стоимости отгруженных товаров (работ, услуг), переданных имущественных прав в сторону уменьшения, в том числе в случае уменьшения цен (тарифов) и (или) количества (объема) отгруженных товаров (работ, услуг), переданных имущественных прав
Ввоз товаров на территорию России и иные территории, находящиеся под ее юрисдикцией, с территории государств – членов ЕАЭС
Ввоз товаров на территорию России и иные территории, находящиеся под ее юрисдикцией, в таможенных процедурах выпуска для внутреннего потребления, переработки для внутреннего потребления, временного ввоза и переработки вне таможенной территории
Операции по восстановлению сумм налога, перечисленные в п. 8 ст. 145, п. 3 ст. 170, ст. 171.1 Налогового кодекса РФ, а также при совершении операций, облагаемых по налоговой ставке 0 процентов Не применяется в случаях восстановления налога в связи:

– с передачей имущества, нематериальных активов, имущественных прав в качестве вклада в уставный (складочный) капитал хозяйственных обществ и товариществ, вклада по договору инвестиционного товарищества или паевых взносов в паевые фонды кооперативов, а также передачи недвижимого имущества на пополнение целевого капитала некоммерческой организации;

– с изменением стоимости отгруженных товаров (выполненных работ, оказанных услуг), переданных имущественных прав в сторону уменьшения, в том числе в случае уменьшения цены (тарифа) и (или) количества (объема) отгруженных товаров (выполненных работ, оказанных услуг), переданных имущественных прав

Операции по возврату авансовых платежей в случаях, перечисленных в абз. 2 п. 5 ст. 171 Налогового кодекса РФ, а также операции, перечисленные в п. 6 ст. 172 Налогового кодекса РФ
Приобретение услуг, оформленных бланками строгой отчетности (БСО) в случаях, предусмотренных п. 7 ст. 171 Налогового кодекса РФ
Регистрация счетов-фактур в книге покупок в случаях, предусмотренных абз. 2 п. 9 ст. 165, п. 10 ст. 171 Налогового кодекса РФ
Регистрация счетов-фактур в книге покупок в отношении сумм налога, ранее восстановленных при совершении операций, облагаемых по налоговой ставке 0 процентов Применяется также плательщиками-изготовителями, которые приобретают товары (работы, услуги) для производства продукции с длительным производственным циклом и определяют момент налоговой базы как день отгрузки таких товаров
Составление первичных учетных документов при реализации товаров (работ, услуг), имущественных прав лицам, не являющимся налогоплательщиками НДС, и налогоплательщикам, освобожденным от исполнения обязанностей налогоплательщика, связанных с исчислением и уплатой налога
Составление счета-фактуры на основании двух и более счетов-фактур при реализации и (или) приобретении товаров (работ, услуг), имущественных прав в случае, предусмотренном п. 3.1 ст. 169 Налогового кодекса РФ, а также получение указанного счета-фактуры налогоплательщиком
Составление счета-фактуры на основании двух и более счетов-фактур при получении оплаты, частичной оплаты в счет предстоящих поставок товаров (работ, услуг), имущественных прав в случае, предусмотренном п. 3.1 ст. 169 Налогового кодекса РФ, а также получение указанного счета-фактуры налогоплательщиком
Приобретение товаров (работ, услуг) у продавцов, которые зарегистрированы на территории Республики Крым или г. Севастополя
Корректировка реализации товаров (работ, услуг), передачи имущественных прав, предприятия в целом как имущественного комплекса на основании п. 6 ст. 105.3 Налогового кодекса РФ

Отгрузка товаров, в отношении которых при таможенном декларировании был исчислен НДС в соответствии с абз. 1 пп. 1.1 п. 1 ст. 151 Налогового кодекса РФ

Отгрузка товаров, в отношении которых при таможенном декларировании был исчислен НДС в соответствии с абз. 2 пп. 1.1 п. 1 ст. 151 Налогового кодекса РФ

Принятие к вычету сумм НДС, уплаченных или подлежащих уплате в случаях, предусмотренных п. 14 ст. 171 Налогового кодекса РФ

?

Количество новых кодов сократилось до 24 вместо применяемых в настоящее время 27.

Как видно из приведенной таблицы, были исключены следующие коды видов операций:

  • 04, 07, 08, 09, 99 (вместо них применяется код 01);
  • 05, 12 (вместо них применяется код 02);
  • 11 (вместо него применяются коды 01 и 14 в зависимости от вида операции).

Добавлены новые коды:

  • 14 – для отражения операций по отгрузке (передаче) или приобретению товаров, имущественных прав, перечисленных в п. 1-4 ст. 155 Налогового кодекса РФ;
  • 15 – для отражения операции по составлению (получению) счета-фактуры комиссионером (агентом) при реализации (получении) товаров (работ, услуг), имущественных прав от своего имени, в котором отражены данные в отношении собственных товаров (работ, услуг), имущественных прав и данные в отношении товаров (работ, услуг), имущественных прав, реализуемых (приобретаемых) по договору комиссии (агентскому договору);
  • 29 – для отражения операций по корректировке реализации товаров (работ, услуг), передачи имущественных прав, предприятия в целом как имущественного комплекса на основании п. 6 ст. 105.3 Налогового кодекса РФ;
  • 30-32 – для отражения операций, связанных с завершением действия таможенной процедуры свободной таможенной зоны на территории особой экономической зоны в Калининградской области.

Указывать правильно приведенные коды в книгах покупок и продаж важно, поскольку они переносятся соответственно в раздел 8 или раздел 9 декларации по НДС. Показатели этих разделов проходят форматно-логический контроль. Проверка правильности составления и заполнения декларации на наличие в ней неточностей и ошибок проводится с помощью контрольных соотношений показателей форм налоговой и бухгалтерской отчетности, приведенных в письме ФНС России № ГД-4-3/4550 от 23 марта 2015 г. Ошибочный код операции (или его отсутствие), перенесенный из книги покупок (книги продаж), может привести к тому, что организации (индивидуальному предпринимателю) направят требование о представлении дополнительных документов и пояснений.

Налоговые проверки становятся жестче. Научитесь защищать себя в онлайн-курсе «Клерка» — «Налоговые проверки. Тактика защиты».

Посмотрите рассказ о курсе от его автора Ивана Кузнецова, налогового эксперта, который раньше работал в ОБЭП.

Заходите, регистрируйтесь и обучайтесь. Обучение полностью дистанционно, выдаем сертификат.

Код операции — обязательный элемент, описывающий операцию, выполняемую командой. Код операции может занимать от одного до трех байт. Для некоторых машинных команд часть битов кода операции может находиться в байте mod r/m.

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

Таблица 3.2. Назначение дополнительных битов поля кода операции

Поле

Количество

Назначение

Определяет направление передачи данных: 0 — передача данных из регистра reg в память (или регистр), адресуемую полем т/т; 1 — передача данных из памяти (или регистра), адресуемой нолем r/m, в регистр reg. При наличии байта sib адрес операнда в памяти формируется с учетом содержимого этого байта

Задает необходимость расширения 8-разрядного непосредственного операнда до 16 или 32 бита. Старшие биты при этом заполняются значением старшего (знакового) бита

исходного 8-разрядного операнда

Определяет размер данных, которыми оперирует команда: байт, слово, двойное слово: 0 -8 битов; 1 —-16 битов для 16-разрядного размера операндов или 32 бита для 32-разрядного размера операндов

Определяет регистр, используемый в команде. Значение поля зависит от ноля w, в том числе если поле w отсутствует (см. следующий подраздел)

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

Байт режима адресации mod r/m

Байт режима адресации mod r/m, иногда называемый постбайтом, несет информацию об операндах и режиме адресации. Большинство команд процессора Intel двухоперандные. Операнды могут находиться в памяти, а также в одном или двух регистрах. Архитектура IA-32 не допускает, чтобы оба операнда команды находились в памяти. Если операнд находится в памяти, то байт mod r/m определяет компоненты (смещение, базовый и индексный регистры), используемые для вычисления его эффективного адреса. Байт mod r/m состоит из трех полей.

-Поле mod (два бита) определяет способ адресации и количество байтов, занимаемых в команде адресом операнда (поле смещения в команде). Поле mod используется совместно с полем r/m, которое определяет способ модификации адреса операнда полем смещения в команде. Поле mod в комбинации с полем r/m образует 32 возможных значения, обозначающих один из восьми регистров и 24 режима адресации. К примеру, если mod = 00, то поле смещения в команде отсутствует и адрес операнда определяется содержимым базового и/или индексного регистра. Какие именно регистры потребуются для вычисления эффективного адреса, определяется значением этого байта. Если mod = 01, то поле смещения в команде присутствует, занимает один байт и модифицируется содержимым базового и/или индексного регистра. Если mod = 10, то поле смещения в команде присутствует, занимает два или четыре байта (в зависимости от значения, действующего по умолчанию или определяемого префиксом размера адреса) и модифицируется содержимым базового и/или индексного регистра. Если mod = 11, то операндов в памяти нет — они находятся в регистрах. Это же значение байта mod используется в случае, когда команда работает с непосредственным операндом.

-Поле reg (3 бита) определяет либо регистр (табл. 3.3 и 3.4), находящийся в команде на месте второго операнда, либо возможное расширение кода операции (давая в совокупности размер поля КОП в 11 битов).

-Поле г/т используется совместно с полем mod и определяет либо регистр, находящийся в команде на месте первого операнда (если mod = 11), либо базовые и индексные регистры, применяемые для вычисления эффективного адреса (совместно с полем смещения в команде).

Таблица 3.3. Значения кодов в поле reg (поле w присутствует в команде)

Поле reg

w=0

w=1

Таблица З.4. Значения кодов в поле reg (поле w отсутствует).

Поле reg

16-разрядные операции

32-разрядные операции

В таблицах нет содержимого поля reg для 16-разрядных регистров в 32-разрядных операциях, так как в архитектуре Intel отдельно использовать старшую половину 32-разрядного регистра невозможно.

В архитектуре Intel один из операндов обязательно находится в регистре, и он может быть первым или вторым. Расположение первого и второго операндов в формате команды фиксировано. Но, например, команда MOV может выполнять пересылку как из регистра в память, так и из памяти в регистр. В машинном представлении это одна и та же команда. В ее поле reg будет содержаться код регистра (см. табл. 3.3и 3.4), а в поле r/m — код режима адресации (см. далее). Эти две команды будут различаться только одним битом d, который определяет направление передачи.

Если в команде участвуют два регистра, то в этом случае вступает в силу правило: поле reg определяет второй операнд, а поле г/т — первый. Если команда mov работает с ячейкой памяти, то в исходном тексте программы могут быть следующие варианты записи этой команды:

mov abll,ax -.пересылка содержимого ах в ячейку памяти abl1

или

mov ax,abll ;пересылка содержимого ячейки памяти abll в ах

В машинном представлении эти две команды будут выглядеть одинаково, за исключением бита d:

-для команды MOV abll,ax бит d = 0;

-для команды MOV ax,abll бит d = 1.

Наиболее сложными для декодирования являются команды с операндом в памяти. Фирма Intel сопровождает описание системы команд специальными таблицами, облегчающими интерпретацию содержимого байта mod r/m (табл. 3.5 и 3.6). С их помощью можно довольно легко восстановить компоненты, из которых формировался адрес операнда, и, в конечном итоге, восстановить соответствующую команду ассемблера для данной машинной команды.

Таблица 3.5. Значения байта mod r/m (16-разрядная адресация)

Таблица З.6. Значения байта mod r/m (32-разрядная адресация)

ЕАХ

ЕСХ

ЕВХ

ЕВР

/цифра (код операции)

Эффективный адрес

Шестнадцатеричные значения mod r/m

садцатер

ичные з

начени

ооо

За

Зс

Смещ_32

Зе

+смещ_8

+смещ_8

+ смещ_8

Эффективный адрес

Шестнадцатеричные значения mod r/m

+смещ_8

+смещ 8

+смещ_8

+ смещ_8

+смещ_8

4f .

+смещ_32

+смещ_32

+ смещ_2

+смещ_32

Ъ4

+смещ_32

+ смещ_32

+смещ_32

С8

С9

с2

са

сЗ

с4

ЕВР/ВР/СН

с5

се

ее

с7

Рассмотрим пример использования данных таблиц при значении байта mod r/m равном 87h. Для восстановления местонахождения операндов данной машинной команды следует найти это значение в одной из таблиц (какой таблицей воспользоваться, зависит от текущего режима адресации) и по первому столбцу строки, содержащей код 87h, определить местонахождение первого операнда. В нашем случае адрес операнда формируется из содержимого регистра ВХ и 16-разрядного смещения, значение которого следует искать в следующих за байтом mod r/m двух байтах. Второй столбец той же строки содержит значение поля mod. Третье поле байта mod r/m можно найти, переместившись вверх по столбцу, содержащему значение 87h, до пересечения со строкой reg или /цифра. При этом будет выбрано значение, идентифицирующее один из регистров или продолжение кода операции. Что именно определяется либо самим кодом операции, либо значением бита w в сочетании с текущей разрядностью адреса (см. ранее).

При использовании 32-разрядной адресации содержимое байта mod r/m трактуется несколько иначе из-за наличия в формате машинной команды байта sib.

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

-sreg86 — сегментные регистры, существовавшие в архитектуре процессоров 18086/88 и i80286;

— sreg386 — сегментные регистры архитектуры процессоров i80386 и выше.

Различие наборов состоит в том, что кодируются они различным количеством битов: sreg86 -двумя битами (табл. 3.7), a sreg386 -тремя (табл. 3.8).

Таблица 3.7. Кодировка сегментных регистров в наборе sreg86

Код в поле sreg86

Сегментный регистр

Таблица 3.8. Кодировка сегментных регистров в наборе sreg386

Код в поле sreg86

Сегментный регистр

101 GS

Одна из целочисленных команд — команда MOV-может оперировать системными регистрами. Кодировка этих регистров приведена в табл. 3.9.

Таблица 3.9. Кодировка системных регистров в команде MOV

Код в поле creg

Регистры управления

Регистры отладки

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

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