|
Ассемблер AVR |
|
|
|
Jul 11 2012, 19:55
|
Группа: Новичок
Сообщений: 2
Регистрация: 11-07-12
Пользователь №: 72 725

|
Не взыщите но глупых вопросов не бывает. Как на ассемблере расшифровать две следующие записи (точне значки << |). 1. 1<<USIOIF 2.( 1<<USIOIF)|( 1<<USICS1) Заранее спасибо.
|
|
|
|
|
 |
Ответов
|
Jul 12 2012, 11:16
|

Гуру
     
Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237

|
Цитата(ILYAUL @ Jul 12 2012, 10:44)  Мне больше "нравится" когда написано так и по всему коду UCSR0B = 0b10011000 Э! Мне так тоже нравится.  Я в свое время голову ломала - зачем так вычурно биты определены, что каждый раз при их использовании приходится единицу влево сдвигать? А потом догадалась - это особенность специфических команд AVR, работающих с отдельными битами, типа: sbi PORTA, PINA2 cbi PORTA, PINA2 где в качестве аргумента должен быть указан НОМЕР бита, а не маска. В тех архитектурах, где подобных инструкций нет, битовые константы опредяляют, как маски, а единиц не двигают.
|
|
|
|
|
Jul 12 2012, 12:47
|
практикующий тех. волшебник
    
Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417

|
Цитата(Xenia @ Jul 12 2012, 15:16)  ...это особенность специфических команд AVR, работающих с отдельными битами, типа: sbi PORTA, PINA2 cbi PORTA, PINA2 где в качестве аргумента должен быть указан НОМЕР бита, а не маска.В тех архитектурах, где подобных инструкций нет, битовые константы опредяляют, как маски, а единиц не двигают. долго читал пэйджер, тьху мессагу. что то с точностью да на оборот Вы написали явно. наоборот, единицы двигаются при создании группы бит = масок. когда у нас один бит - то собственно достаточно явно указать бит. правда не все регистры корректно могут воспринимать это (sbi, cbi). и вроде как до вашей мессаги sbi & cbi команды вообще не рассматривались. т.е. речь шла конкретно о сдвиге и всё что вокруг него крутиться. тут наверное ближе слово не архитектура а компилятор. т.к. на выходе (в бинарнике) будет одна сущность = байт, слово, двойное слово и т.д.. а как вы его получили или слепили(можно например умножать в целых числах, или логически объеденять в различных системах счисления) - для железа вовсе фиолетово.
Сообщение отредактировал kolobok0 - Jul 12 2012, 12:52
|
|
|
|
|
Jul 12 2012, 14:06
|

Гуру
     
Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237

|
Цитата(kolobok0 @ Jul 12 2012, 16:47)  долго читал пэйджер, тьху мессагу. что то с точностью да на оборот Вы написали явно. наоборот, единицы двигаются при создании группы бит = масок. когда у нас один бит - то собственно достаточно явно указать бит. правда не все регистры корректно могут воспринимать это (sbi, cbi). и вроде как до вашей мессаги sbi & cbi команды вообще не рассматривались. т.е. речь шла конкретно о сдвиге и всё что вокруг него крутиться. В том-то и дело, что из номеров битов можно состряпать маску (сдвигая ту самую едлиницу), тогда как обратное преобразование арифметическими средствами невозможно. Поэтому, если в хидерах/инклюдах имена битов опредены, как маски, то использовать их в качестве аргументов sbi/cbi будет нельзя. А вот определение их, как номер бита, позволяет делать и то и другое, с теми лишь накладными расходами, что приходится двигать единицу, когда нужна маска. И несмотря на то, что двигается эта единица не в процессе исполнения, а в процесе компиляции, битовые маски, образуемые большим набором битов, выглядят в таком исполнении чудовищно.  А не было бы в инструкциях команд sbi/cbi, но не было бы и проблемы, т.к. ничто не мешало бы перейти на маски.
|
|
|
|
|
Jul 12 2012, 15:27
|
Участник
  
Группа: Свой
Сообщений: 462
Регистрация: 2-04-07
Из: Иркутск
Пользователь №: 26 695

|
Цитата(Xenia @ Jul 12 2012, 23:06)  ...обратное преобразование арифметическими средствами невозможно. AVRASM & AVRASM2, установить в "1" бит 5 в регистре R16 и в PORTA. Код .equ MASK = 0b00100000 ORI R16, MASK SBI PORTA, LOG2(MASK)
|
|
|
|
Сообщений в этой теме
vvvalarm Ассемблер AVR Jul 11 2012, 19:55 ILYAUL Вот Jul 11 2012, 20:22 Xenia Это не ассемблер, а C. Сдвиг единички влево на ука... Jul 11 2012, 20:22 ILYAUL Цитата(Xenia @ Jul 12 2012, 00:22) Это не... Jul 11 2012, 20:27 _Артём_ Цитата(Xenia @ Jul 11 2012, 23:22) Это не... Jul 11 2012, 20:33  Xenia Цитата(_Артём_ @ Jul 12 2012, 00:33) Нет,... Jul 11 2012, 20:42   _Артём_ Цитата(Xenia @ Jul 11 2012, 23:42) Ясное ... Jul 11 2012, 21:54   V_G Цитата(Xenia @ Jul 12 2012, 06:42) Ясное ... Jul 11 2012, 23:00    SmarTrunk Как раз сейчас осваиваю не спеша ассемблер AVR. На... Jul 12 2012, 00:30     Сергей Борщ QUOTE (SmarTrunk @ Jul 12 2012, 03:30) Те... Jul 12 2012, 05:58     vvvalarm Цитата(SmarTrunk @ Jul 12 2012, 03:30) Ка... Jul 13 2012, 17:02 _Артём_ Цитата(vvvalarm @ Jul 11 2012, 22:55) Не ... Jul 11 2012, 20:23 Сергей Борщ QUOTE (ILYAUL @ Jul 12 2012, 09:44) Мне б... Jul 12 2012, 08:17  Tiro Цитата(Сергей Борщ @ Jul 12 2012, 11:17) ... Jul 12 2012, 20:41   Сергей Борщ QUOTE (Tiro @ Jul 12 2012, 23:41) А почем... Jul 12 2012, 21:56    Tiro Цитата(Сергей Борщ @ Jul 13 2012, 00:56) ... Jul 12 2012, 22:03    ReAl Цитата(Сергей Борщ @ Jul 13 2012, 00:56) ... Jul 13 2012, 04:02     Сергей Борщ QUOTE (ReAl @ Jul 13 2012, 07:02) операто... Jul 13 2012, 06:31     Xenia Цитата(ReAl @ Jul 13 2012, 08:02) Скорее,... Jul 13 2012, 07:57      Сергей Борщ QUOTE (Xenia @ Jul 13 2012, 10:57) уперся... Jul 13 2012, 08:24       ReAl Цитата(Сергей Борщ @ Jul 13 2012, 09:31) ... Jul 14 2012, 10:31      XVR Цитата(Xenia @ Jul 13 2012, 11:57) а MS V... Jul 13 2012, 08:45       Xenia Цитата(XVR @ Jul 13 2012, 12:45) А для пр... Jul 13 2012, 10:14        XVR Цитата(Xenia @ Jul 13 2012, 14:14) Не виж... Jul 13 2012, 10:56       demiurg_spb да именно статк асерт здесь рулит.
to Xenia: кон... Jul 13 2012, 10:16        Xenia Цитата(demiurg_spb @ Jul 13 2012, 14:16) ... Jul 13 2012, 11:07         demiurg_spb Цитата(Xenia @ Jul 13 2012, 15:07) Зато в... Jul 13 2012, 11:45  _Артём_ Цитата(Xenia @ Jul 12 2012, 14:16) В тех ... Jul 12 2012, 12:38     Xenia Цитата(ae_ @ Jul 12 2012, 19:27) .equ MAS... Jul 12 2012, 16:00      SSerge Цитата(Xenia @ Jul 12 2012, 23:00) Ух ты... Jul 12 2012, 17:18       Xenia Цитата(SSerge @ Jul 12 2012, 21:18) Это т... Jul 12 2012, 17:26  _Pasha Цитата(Xenia @ Jul 12 2012, 14:16) В тех ... Jul 13 2012, 00:26   ae_ Цитата(_Pasha @ Jul 13 2012, 09:26) #defi... Jul 13 2012, 03:11 ILYAUL Так слово нравится я написал в ковычках - т.е как... Jul 12 2012, 09:27 ILYAUL Ну вот, и поговорили за asm Jul 14 2012, 22:21 ReAl — Привет, Пух!
— Привет, Пятачок!
— Хороша... Jul 15 2012, 05:18 uni Как я улучшаю читаемость при установке битов в кон... Jul 26 2012, 00:39 ILYAUL Вернёмся к asm. Тут вот , через эное количество ле... Aug 6 2012, 17:43 _Артём_ Цитата(ILYAUL @ Aug 6 2012, 20:43) что ме... Aug 6 2012, 18:33 ILYAUL Про него, родимого. Явных адресов подпрограмм Вы т... Aug 6 2012, 19:30 _Артём_ Цитата(ILYAUL @ Aug 6 2012, 22:30) Но пер... Aug 6 2012, 20:13 ILYAUL Нет . Артём , я Вам в личку отвечу подробно. Я по... Aug 6 2012, 20:32 kolobok0 Цитата(ILYAUL @ Aug 7 2012, 00:32) ...мож... Aug 7 2012, 06:22  demiurg_spb Цитата(kolobok0 @ Aug 7 2012, 10:22) для ... Aug 7 2012, 06:25   kolobok0 Цитата(demiurg_spb @ Aug 7 2012, 10:25) .... Aug 7 2012, 07:07 ILYAUL Цитатаидёт речь об адресах, которые могут хранитьс... Aug 7 2012, 08:41 kolobok0 Цитата(ILYAUL @ Aug 7 2012, 12:41) ...Вы ... Aug 7 2012, 11:38 ILYAUL 1. Я не храню там адреса переходов , я использую а... Aug 7 2012, 12:42 kolobok0 Цитата(ILYAUL @ Aug 7 2012, 16:42) ...2. ... Aug 7 2012, 13:43 ILYAUL Спасибо , за пояснения.
ЦитатаОтсюда я и спрашивал... Aug 7 2012, 15:34
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|