Страница 145 из 400
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Сб июл 21, 2012 14:19:43
Vendein_RaZoR
Всё таки насчет меток не совсем понятно . Насколько я знаю метка будет означать по-другому опкод инструкции которая идет после неё , например :
А если например у нас едут 2 и более инструкций после метки , то всё равно берется опкод только первой инструкции ???
Например :
Код: Выделить всё
xor ebx,ebx
mov ebx,metka
metka: mov ebx,ecx
mov eax,ebx
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Сб июл 21, 2012 14:25:56
Alexeyslav
Да, ты очень сильно запутался! То что ты имеешь в виду это директивы DEFINE и MACRO, а метка это АДРЕС инструкции которая следует за ней.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Сб июл 21, 2012 15:43:25
Vendein_RaZoR
метка это АДРЕС инструкции которая следует за ней.
Ну

Адрес инструкции по-другому же опкод ?
Получается которая ТОЛЬКО следует за ней (одна инструкция ? )
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Сб июл 21, 2012 15:57:05
Alexeyslav
ОПКОД это код инструкции, число описывающее саму инструкцию, чтобы исполнительный блок процессора смог разобрать где в инструкции заданы операнды и что нужно делать.
Все равно микроконтроллеры сильно отличаются от процессоров, так что лучше не забивай себе голову аналогиями с инструкциями x86 процессоров. как минимум у AVR отсутствует аккумулятор, все регистры однобайтные и их 32 штуки причем 6 старших из них образуют пары и используются как индексные регистры X, Y и Z. Вся система инструкций состоит из ста с чем-то инструкций, большая половина которых являются частными случаями более универсальных.
ОпКод - это заимствованное с английского сокращение, которое если перевести на наш означает "код операции"
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Сб июл 21, 2012 16:11:56
Vendein_RaZoR
А ну тогда получается что метка - это адрес инструкции , а опкод получается указатель метки ?
Например :
Код: Выделить всё
metka: mov ecx,ebx
mov cx, word[metka] ; то есть в младшую часть регистра ecx будет записан именно опкод инструкции , так ?
И ещё такой вопрос : если мы инициализируем какие либо данные (db 8 dup (0) например) , то получается инициализация происходит сразу при объявлении ? А если db 8 dup (?) то инициализации не происходит ?
ЗЫ сейчас просто пока работаю с x86 процессором в защищенном режиме , на AVR не пишу пока прошивки
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Сб июл 21, 2012 18:36:55
Alexeyslav
Тогда ты немного ошибся форумом... тут ведь по контроллерам.
Опкод - это часть кода инструкции. Никакого отношения к меткам он не имеет, ни прямого ни косвенного.
Вообще забудь это слово, оно нужно только чтобы разобрать двоичный код инструкций.
Когда ты используешь директиву DB и им подобные ты ничего не объявляешь! Ты просто в это место вставляешь двоичные данные. Все равно что писать инструкцию.
"DB 0xСD, 0x21" будет полностью эквивалентно записи инструкции "INT 21h" которая компилятором преобразуется именно в этот вид. кстати в этом случае опкод будет равен 0xCD, а 0x21 - операнд.
в часности директиву DB можно использовать для записи инструкций новых процессоров, о которых не знает компилятор, вводить массивы каких-либо данных и т.д.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Сб июл 21, 2012 20:31:23
Vendein_RaZoR
Вот ещё такой вопрос : получается регистр может сохранять как значения так и адрес ? Получается может выступать в роли указателя ? (регистры общего назначения например)
Тогда получается метка - это адрес на который она указывает , то есть адрес инструкции которая идет после неё , так ?
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Сб июл 21, 2012 20:49:57
Alexeyslav
Да.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Сб июл 21, 2012 21:09:27
Vendein_RaZoR
Ну у меня в книжке написано так :
В регистр cx помещается опкод инструкции mov ebx,eax
(часто речь идет именно об опкодах а не адресах)
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Сб июл 21, 2012 21:11:47
Alexeyslav
Ты как всегда путаешь понятия. Да, она загрузит ОПКОД - т.е. ДАННЫЕ которые находятся по адресу МЕТКА.
Причем целое слово, 2 байта.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Сб июл 21, 2012 21:27:41
Vendein_RaZoR
Но там же указатель ? Получается он загрузит не само значение которое "возвращает" инструкция (опкод) , а адрес (слово , старшие 2 байта) ?
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Сб июл 21, 2012 21:49:28
Alexeyslav
Мне кажется ты рано взялся за ассемблер... квадратные скобки означают данные находящиеся по адресу внутри них. Процессор обратится к памяти по адресу МЕТКА возьмет там два байта, и вернет как результат.
Ему безразлично что там будет по этому адресу, какая-то инструкция или просто данные.
Перед тем как разбирать инструкции, разберись сначала со способами адресации, и как они записываются.
В таких вещах методика "пойму по ходу дела" не прокатывает - слишком быстро зарываешься в дебри и естественно ничего не можешь понять.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Сб июл 21, 2012 22:15:11
Vendein_RaZoR
Тогда я не совсем понял разницы между этими двумя инструкциями :
mov ecx,ebx
mov ecx,[ebx]
Если мы командой mov пересылаем именно данные в первом случае из одного регистра в другой , то во втором мы делаем тоже самое что ли , присваиваем значение по-другому ? Или в первом случае мы присваиваем адрес регистра ebx ?
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Сб июл 21, 2012 22:55:19
zero648
Это совсем разные команды:
mov ecx,ebx ; здесь присваиваем регистру ecx значение регистра ebx
mov ecx,[ebx] ; здесь присваиваем регистру ecx значение содержащееся по адресу содержащемуся в регистре ebx, т.е. ebx содержит адрес, по которому находится значение, которое будет загружено в ecx
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Сб июл 21, 2012 22:55:49
Jack_A
Стесняюсь спросить : чегой-то в теме про AVR съехали на Intel`овский ассемблер ? У них разные весовые категории.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Сб июл 21, 2012 23:02:39
zero648
Дак это ..., без слез не взглянешь!

Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вс июл 22, 2012 05:51:50
BOB51
Самое досадное, что народ не совсем понял разницу между микропроцессором в составе персонального компьютера, работающего под управлением опреационной системы (аппаратная реализация схемотехники и ее особенности, распределение ресурсов, в том числе и ОЗУ),
и нашими микроконтроллерами (или система на кристалле)...
Если копать ПК на том уровне, что и МК, да еще на ассемблере то прийдется изучать и bios и структуру (описание регистров, адресация, управление) всех СБИС в ПК входящих...
Для того надо соответствующие форумы искать, да и на основе какого асма? masm32 sdk? fasm? борландовский tasm или еще чего - там ведь вариантов весьма много (в отличии от AVRASM/AVRASM2 в avr studio или mpasm в mplab)

Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вс июл 22, 2012 07:39:05
Vendein_RaZoR
mov ecx,[ebx] ; здесь присваиваем регистру ecx значение содержащееся по адресу содержащемуся в регистре ebx, т.е. ebx содержит адрес, по которому находится значение, которое будет загружено в ecx
А ну всё понятно , получается мы читаем из регистра как из указателя , так ?
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вс июл 22, 2012 08:26:33
BOB51
Читается содержимое ячейки памяти, адрес которой указан содержимым регистра ebx, (однако вот относительно какого сегментного регистра (ds, es, cs или sp - не помню, склерозумс - по умолчанию вроде адрес ячейки будет ds:ebx )
У avr таких заморочек нет в связи с структурными особенностями МК (раздельный доступ к памяти программ и памяти данных)
если мы читаем ПЗУ то неполным аналогом (нет сегментных регистров) будет LPM Rd,Z ну и нечто "поближе" у mega/xmega ELPM Rd,Z поскольку "примешался" RAMPZ (rampz:z)
если читаем внутреннее/внешнее ОЗУ команды ряда LD/LDD по адресу, определяемому содержимым регистровых пар Zh:Zl,Xh:Xl или Yh:Yl.
Говорят же - не в тех МК (не на том форуме) ответ ищем - на крайний случай создай отдельную ветку в этом же разделе (Микроконтроллеры и ПЛИС) или прицепись к темам по I8088/86 (наша кр1810вм88/кр1810вм86), I8080 ( КР580ВМ80) на крайний случай Z80 или MCS51!

Не грузи народ интеловско-мелкософтовской идеологией - и так мозги "шипят"

Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт июл 24, 2012 11:47:30
Vendein_RaZoR
Вот ещё последний вопрос :
А если например : mov ah,dh
то получается значение dh записывается по адресу со смещением ah ?