программа в озу

8-битные микроконтроллеры AVR (AT90, ATtiny, ATmega) от Atmel (в настоящий момент принадлежит Microchip)

Moderator: Shaos

7400
Maniac
Posts: 254
Joined: 14 Jul 2011 02:18
Location: Гомель

программа в озу

Post by 7400 »

в каких атмега-8 подобных мелкоконтроллерах можно загрузить программу в озу и переслать туда управление? (знаю что так можно делать и делается во всяких арм и всяких х86 а что доступно для нас)
jdigreze
God
Posts: 1388
Joined: 02 Jan 2006 02:28
Location: Abakan

Post by jdigreze »

На сколько я помню, в атмегах нельзя использовать внешную память программ. Издержки гарвардской архитектуры. Кстати уже обсуждалось где-то тут на форуме. Только байт-код. Как вариант - семейство MCS51, там несмотря на гарвардскую архитектуру можно ставить внешную память программ, которую можно внешне логически объединять с памятью данных.
User avatar
HardWareMan
Banned
Posts: 2139
Joined: 20 Mar 2005 13:41
Location: От туда

Post by HardWareMan »

В случае с AVRками не сколько издержки гарвардской, сколько издержки RISC и однотактового доступа к памяти программ. Ибо, у MCS51 тоже память программ отдельная, однако можно соединить ее с памятью данных.
7400
Maniac
Posts: 254
Joined: 14 Jul 2011 02:18
Location: Гомель

Post by 7400 »

а хотябы не во внешнюю а в свою озу шку допустим атмеги8 можно такую операцию сделать? узнать адрес начала озу и переслать управление туда

и так на всякий случай где можно найти систему команд х8086(с байт кодами + код на ассемблере + описание)
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

7400 wrote:...где можно найти систему команд х8086(с байт кодами + код на ассемблере + описание)
Возьми вот здесь:
Описание системы команд микропроцессоров Intel

Почему-то не нашел в Интернете этой подборки... :( запускай _index_.htm
7400
Maniac
Posts: 254
Joined: 14 Jul 2011 02:18
Location: Гомель

Post by 7400 »

спс довольно не плохо но там нету компилированной команды :(
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

7400 wrote:спс довольно не плохо но там нету компилированной команды :(
(с) "...неблагодарный... ему ещё и колёсики!" :D

Ну тогда сам ищи в Инете электронный справочник TECH Help.
User avatar
HardWareMan
Banned
Posts: 2139
Joined: 20 Mar 2005 13:41
Location: От туда

Post by HardWareMan »

Lavr wrote:Ну тогда сам ищи в Инете электронный справочник TECH Help.
В течхелпе мало асма. Нужен Хелппц. Энивей, доставлено!
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

7400 wrote:...но там нету компилированной команды :(
Я может чего не понял, "компилированной команды" - это ты имел в виду код команды?

Может быть таблицы справочников и сподручнее, но код любой команды,
тем более что для х8086, очень просто и быстро увидеть под утилитой DEBUG.
Пишешь в ней конкретную строку в мнемонике - и тут же получаешь код команды.

А справочники любят погрешить описаниями типа - код: ddXXXYYY где XXX - номер
регистра приёмника, YYY - номер регистра источника, dd - код операции.

Смотри сам, как тебе удобнее...


PS. Озадачился сам, не кончился ли у М$ debug.exe?... погуглил:
- В Windows XP debug.exe присутствует.
- В ответ на попытку ввести 'debug' у себя в Windows7 получил сообщение об отсутствии такой команды.
- Насколько я понял, стоит Windows7 x64 ? Потому как в 32 разрядной версии Windows 7 он присутствует (сам проверял).
7400
Maniac
Posts: 254
Joined: 14 Jul 2011 02:18
Location: Гомель

Post by 7400 »

ну это ладно я книгу нашел в ней более 200 страниц команд с описанием и с кодами команды :D

главный вопрос выбор команды через case либо еть другой способ?
User avatar
MC68k
Retired
Posts: 1328
Joined: 25 Jul 2011 00:14
Location: WWW

Post by MC68k »

почему-то вспомнились вилки, хлеб и троллейбус
7400
Maniac
Posts: 254
Joined: 14 Jul 2011 02:18
Location: Гомель

Post by 7400 »

кстати книга довольно неплохая
В.И. Юров Assembler 2-е издание

в приложении есть все команды IA-32 с описанием , машинной командой , изменяемыми флагами
озу на все регистры думаю должно хватить а вот пзу на описание наврятли... мега 32 наверное как минимум нужна

дач подскажите как оформить выборку команды ? ну вот допустим
if cm[1] = 37 then \\команда AAA
begin
if (((AL <<4) >>4) > 9) or (AF =1) then
begin
AL:=AL+6;
AH:=AH+1;
AF:=1;
CF:=1;
AL:=AL AND 0fh;
end
else AL:=AL AND 0fh;
end;
ну собственно таким образом все команды организовать
как думаете получится?
User avatar
HardWareMan
Banned
Posts: 2139
Joined: 20 Mar 2005 13:41
Location: От туда

Post by HardWareMan »

Это смотря что ты хочешь получить. Если дизасм - то можно тупо кейсом. А для i8080 очень хорошо подходит побитовое разложение команды.
7400
Maniac
Posts: 254
Joined: 14 Jul 2011 02:18
Location: Гомель

Post by 7400 »

а можно поподробнее ?
типа такого
если 1 бит = 1 тогда
{
если 2 бит равен 0 тогда {}
если 2 бит равен 1 тогда {}
}
ну собственно такая вложенность или я что-то неправильно понял?
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

7400 wrote:а можно поподробнее ?
типа такого

Code: Select all

если 1 бит = 1 тогда 
{
если 2 бит равен 0 тогда {}
если 2 бит равен 1 тогда {}
}
ну собственно такая вложенность или я что-то неправильно понял?
Ну да - я тебе и привел пример: код: ddXXXYYY где XXX - номер
регистра приёмника, YYY - номер регистра источника, dd - код операции.

Code: Select all

если dd = 11 тогда
команда = MOV 
{
если XXX  равен 000 тогда {это регистр АХ}
если YYY равен 010 тогда {это регистр ВХ}
}
примерно так, что собственно мы разбирали где-то как парсинг кода команды.

Мне только на Паскале твоём это непривычно несколько.
Но почему бы и нет.

На ассме я бы сдвигами и масками стал делать, ну и таблицы можешь попробовать заюзать.
Last edited by Lavr on 09 Mar 2012 20:42, edited 1 time in total.