Хорошо, давайте посмотрим, как это делается.
Сначала получите таблицу инструкций. Я нашел это первое попадание в простом веб-поиске по "таблице инструкций avr":
Руководство по набору инструкций AVR @ Microchip
LDI Rd, K
с d
в качестве номера регистра и K
в качестве непосредственного значения, которое должно быть загружено в этот регистр, описано в главе 73 в кодировке 1110 KKKK dddd KKKK
.
Нам необходимо найти значение букв. Ну, в документах об этом ничего не говорится. О-о, плохо документировано, нам нужен другой источник.
Один из других хитов выглядит многообещающим:
Набор инструкций AVR - все коды операций @ Lyons42
Всего один или два щелчка, и мы обнаруживаем, что старший полубайт (4-битная половина) K
входит в первый байт кода операции. И нижний клев переходит во второй байт.
Например, LDI R23, 150
будет иметь d = 23 - 16 = 7
(минус 16, потому что поддерживаются только R16-R31, и поэтому 16 является смещением), и K = 150 = 0x96
, Код операции становится 1110 1001 0111 0110
или 0xE976
.
Все последующие инструкции могут быть переведены таким же образом.
Примечание: гораздо более простым решением является использование ассемблера и посмотрите в его список. Но это может быть обманом. ; -)