Ассемблер (ASM) для AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 6349
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Сообщение Jack_A »

Пытливый расейский ум... :) "Пробьет он крышку люка или нет? " ©
Изображение
Реклама
Встал на лапы
Сообщения: 106
Зарегистрирован: Чт сен 10, 2015 06:59:03
Откуда: Гродно, BY

Сообщение trofim2 »

Пробьет! Без прерываний работает.
Недокументированного ничего не использую.
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18791
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

trofim2 писал(а):Без прерываний работает.
вы хоть расскажите, что за задачу решаете и на каком МК, что таким способом боретесь с нехваткой стека... а то догадостности не хватает додуматься самому, зачем это нужно...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 15793
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

ARV писал(а):господа, а вот оно вам нужно - ковыряние в неприличном? ну для какой цели эти "исследования"? неужели вы всерьез собираетесь использовать недокументированные возможности, которые по определению противоречат здравому смыслу, а именно использование области РОН под стек?! лучше посоветовать пожелавшему такое сделать лизнуть провода, торчащие из розетки, чем так писать программы...
...
Вообще-то надо...
Ибо
1. чтоб не было в дальнейшем попыток использовать некорректные комбинации команд/адресного пространства
2. несмотря на имеющиеся в системе команд MOV rd,rr и MOVW rd,rr при преимущественной обработке массивов с размещением данных в ОЗУ имеется также интерес к обработке коротких массивов с размещением данных в регистрах РОН (до 16 байт) при косвенном указателе в Z/X/Y.
:roll:
trofim2 писал(а):У меня ошибок не выдает
screen_cr.jpg
Это при компиляции, а мой скрин касается работы дебаггера
8)
Реклама
Эиком - электронные компоненты и радиодетали
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18791
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

BOB51 писал(а):Вообще-то надо...
Ибо
вот это ваше "ибо" очень напоминает вырезание аденоидов через задний проход...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15793
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Ну уж "когда КОТУ делать нечего..." можно и такими вопросами поинтересоваться.
Мало ли чего и когда потребуется...
:dont_know:
Реклама
akl
Друг Кота
Сообщения: 4473
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

trofim2 писал(а):Самое интересное, что Push/Pop тоже работает, (правда проверял с одной парой Push/Pop), но не нашел, куда складывает.
Действительно работает в железе только при однократном PUSH/POP!!!
Спойлер

Код: Выделить всё

   .INCLUDE "tn2313def.inc"

.cseg
.org 0
RESET:
   LDI   R16,0x05
   OUT   SPL,R16

   CLR   R0
   DEC   R0

   IN	R14,SREG
   MOV	R4,R14
   PUSH	R14
;   LDI	R17,0x44
;   MOV	R7,R17
;   PUSH	R17

	CLR	R14
;   CLR	R17

   OUT   DDRB,R0
   OUT   PORTB,R0

   LDI   R16,1
   OUT   TCCR1B,R16

	TST	R16

;	POP	R17
	POP	R14
	OUT	SREG,R14

	CP	R14,R4
;	CP	R17,R7
	BREQ	WAIT
	RJMP	PC
WAIT:
	IN	R16,TIFR
	SBRS	R16,TOV1
	RJMP	WAIT
	OUT	TIFR,R16
	OUT	PINB,R0
   RJMP   WAIT
.EXIT
Вымогатель припоя
Аватара пользователя
Сообщения: 606
Зарегистрирован: Чт окт 06, 2016 21:12:07
Откуда: Южное Бутово

Сообщение ptr128 »

Почитал, врубаюсь, но так и не понял до сих пор. А какое практическое применение может быть в использовании SP не по прямому назначению?
Или это в чистом виде теоретические исследования, которые до технологической стадии еще не дошли?
Не ошибается только то, кто ничего не делает.
Тот, кто признает свои ошибки, на них учится.
Глупец же, упорствуя в своих заблуждениях, остается глупцом.
Первый раз сказал Мяу!
Сообщения: 31
Зарегистрирован: Сб сен 17, 2016 18:56:30

Сообщение dimmer »

Тут просто парни хотят накопать на Нобелевскую премию (или Шнобелевскую) в номинации "Особо извращенный изврат".
Встал на лапы
Сообщения: 106
Зарегистрирован: Чт сен 10, 2015 06:59:03
Откуда: Гродно, BY

Сообщение trofim2 »

Если нельзя, но очень хочется, значит можно.

Практическое применение - в нестандартном мышлении и принятии решения.
Друг Кота
Аватара пользователя
Сообщения: 15793
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

ptr128 писал(а):Почитал, врубаюсь, но так и не понял до сих пор. А какое практическое применение может быть в использовании SP не по прямому назначению?
Или это в чистом виде теоретические исследования, которые до технологической стадии еще не дошли?
Для указателя стека - определение/подтверждение границ действия. Ибо в техдокументации нет явного утверждения границ адресов ОЗУ для применения указателя стека, а область РСФ/РОН также заявлена производителем как "отображение на ОЗУ".
Для косвенной адресации РОН - практическая обработка малых массивов с максимальным быстродействием и/или косвенной адресацией. Дополнительная "плюшка" - возможность модификации обрабатываемого регистра в ходе обработки.
В принципе то же и для работы через память выполнимо, однако массивчик как область "сверхбыстрой" передачи параметров имеет некоторые преимущества.
Вобщем - дополнительный анализ рамок применения системы команд и способов адресации "на когда делать нечего".
:beer:
Друг Кота
Аватара пользователя
Сообщения: 6349
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Сообщение Jack_A »

BOB51 писал(а): Для косвенной адресации РОН - практическая обработка малых массивов
Ну это-то работает без проблем, многократно проверено. Например, в 1200 ОЗУ вообще нет, но косвенная адресация имеется. Правда, только через Z. Тут главное - косвенной адресацией сам регистр-указатель не задеть. Как говорил врач из фильма "Экипаж", вправляя пациенту вывихнутую челюсть: "Тут главное - руку вовремя отдернуть" :)
Изображение
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18791
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Jack_A писал(а):Правда, только через Z
хорошо сказано, прямо в тему последних сообщений! :)
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 6349
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Сообщение Jack_A »

Я же не сказал "через Ж" :) В 1200 Z-регистр (R30) один, там нет ZH, вот через него и адресуем ячейку в регистровом файле.
Изображение
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18791
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

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

Мой уютный бложик... заходите!
Контактная информация:
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

Код: Выделить всё

           clz
			clc
			cp  EncD_Plus, EncD_Minus                  ; сравнить две переменные
			breq Ravno                       ; если равны, то переходим
			brlo Menshe                      ; а если первая меньше, чем вторая, то переходим в другое место
                             nop                           ; иначе выполняем другой код.

Будет ли такая конструкция корректно работать?
Последний раз редактировалось СКАЗОЧНИК Вс окт 16, 2016 14:38:49, всего редактировалось 2 раза.
Станислав
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Почему оно должно не работать? Сброс флагов только тут лишнее.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

Почему сброс лишнее? :roll: Я же не знаю, какие они были до этого... :dont_know:
Станислав
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

CPI установит флаги в по результаты операции, не важно что было перед этим. Щаззз ссылку найду как флаги устанавливаются для нее.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

Да, только я подправил свой код. )))
Не CPI, а CP (хотя, для флагов не принципиально, они одинаково ставят)

Но и у меня в шпаргалке написано, что эта команда ставит все флаги. Но не написано, что она их сбрасывает.... :dont_know:
Станислав
Ответить

Вернуться в «AVR»