0 / 0 / 0
Регистрация: 07.03.2010
Сообщений: 918
1

Кто помнит асм для stm? надо 6 строк.

15.08.2013, 12:56. Показов 4750. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
надо проверить железо МК.
у меня r/w регистр не устанавливается. Хочется проверить, не аппаратная ли проблема

Если не лень, напишете:
1) запись в 0x40010C04 0x44444144
2) запись в 0x40010C0С 0x0400
3) чтение из 0x40010C0С, и если не 0x0400 - 2)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.08.2013, 12:56
Ответы с готовыми решениями:

Кто-нибудь пишет код по памяти или кто помнит строку соединения к SQL на память?
Например, я пишу только копируя свои предыдущие работающие примеры. Т.е. у меня есть кучка кода,...

Модульное программирование(связь асм-асм и асм-пасм)
Очень нужна помощь, сама сделала все что могла...просто не понимаю почему не работает( задание:...

Тем, кто помнит БК 0010-01
СВЯТАЯ БИБЛИЯ БК-0010 БЫТИЕ 1. В начале было слово. И слово было 16 бит аки два байта. И...

Карты Карно, кто помнит?
Взялся помочь и сам в ступор впал. Условие такое: есть заданное логическое выражение, необходимо...

Кто помнит свои первые деньги?
Кто сейчас вспомнит свой первый заработок, полученный за работу, связанную с компьютерами?...

7
0 / 0 / 0
Регистрация: 07.03.2013
Сообщений: 176
15.08.2013, 15:07 2
movw r1, 0x0C04 ;адрес 0x40010C04
movt r1,0x4001
movw r0, 0x4144
movt r0,0x4444
str r0,[r1]
m:
mov r0,0x0400
str r0,[r1,8]
ldr r3,[r1,8]
cmp r3,0x0400
bne m
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
15.08.2013, 15:30 3
Цитата Сообщение от osmy
movw r1, 0x0C04 ;адрес 0x40010C04
movt r1,0x4001
movw r0, 0x4144
movt r0,0x4444
str r0,[r1]
m:
mov r0,0x0400
str r0,[r1,8]
ldr r3,[r1,8]
cmp r3,0x0400
bne m
Зачем так усложнять занесение константы в регистр?
Код
  mov r1, 0x40010C04    ;адрес для записи слова
mov r0, 0x44444144    ;записывемое значение
str r0, [r1]
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
15.08.2013, 16:23 4
dikor, поскольку Вы работаете с периферийными регистрами, то в этом месте надо было уточнить, что данные шестнадцатиразрядные:
Цитата Сообщение от dikor
2) запись в 0x40010C0С 0x0400
3) чтение из 0x40010C0С, и если не 0x0400 - 2)
так как это влияет на выбор ассемблерных команд. Так, например, "mov r0,0x0400" - это запись 32-хразрядного слова 0x00000400, т.е. не то, что нужно.
0
0 / 0 / 0
Регистрация: 07.03.2013
Сообщений: 176
16.08.2013, 08:15 5
Цитата Сообщение от OtyxPM
Зачем так усложнять занесение константы в регистр?Код:
mov r1, 0x40010C04 ;адрес для записи слова
mov r0, 0x44444144 ;записывемое значение
str r0, [r1]
В 86й архитектуре процессор читает байт команды, и добивает её если надо байтами с адресом, режимом или расщирением команды, а в АРМе все команды одного размера и если не влазит константа четырёхбайтовая в четырёхбайтовую команду, то нужно писать ещё команду. movt movw две команды которые пишут константу32 в регистр, не важно в каком виде мы даём данные hex или dec, данные у железяки всегда в bin в итоге.
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
16.08.2013, 10:26 6
Цитата Сообщение от osmy
В 86й архитектуре процессор читает байт команды, и добивает её если надо байтами с адресом, режимом или расщирением команды, а в АРМе все команды одного размера и если не влазит константа четырёхбайтовая в четырёхбайтовую команду, то нужно писать ещё команду. movt movw две команды которые пишут константу32 в регистр, не важно в каком виде мы даём данные hex или dec, данные у железяки всегда в bin в итоге.
Вот не надо меня учить, чем CISC отличается от RISC.
Скомпилируйте мой код - тогда и посмотрим.
Судя по названию форума "STM32", у автора темы не ARM, а ARM-Sortix. У Sortixов длина команд как раз НЕ постоянная :-Ь

P.S. Писать вместо 32-хбитного MOV пару 16-тибитных movw/movt - это извраткак минимум нерационально.
0
0 / 0 / 0
Регистрация: 07.03.2013
Сообщений: 176
16.08.2013, 20:27 7
Цитата Сообщение от OtyxPM
Вот не надо меня учить, чем CISC отличается от RISC.
Скомпилируйте мой код - тогда и посмотрим.
Судя по названию форума "STM32", у автора темы не ARM, а ARM-Sortix. У Sortixов длина команд как раз НЕ постоянная :-Ь

P.S. Писать вместо 32-хбитного MOV пару 16-тибитных movw/movt - это извраткак минимум нерационально.
Ваш компилятор в любом случае ставит вместо mov32 две инструкции, у которых 16ти битные константы внутри. На трансляторе можно макрос написать для этой команды.
0
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 183
21.08.2013, 18:00 8
а кто может подсказать, как вставить пару ассемблерных строк в текст на Си в Кейле? [/color]
Нашла :-)
Код
{
int a;
{
__asm {mov a,#12}
}
}
0
21.08.2013, 18:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.08.2013, 18:00
Помогаю со студенческими работами здесь

Кто нибудь помнит файлообменик в виде консоли?
Помню давно был файлообменник в виде консоли. Цвета были в основном зелёные. Если кто нибудь...

Язык программирования CAMFORT - кто-нибудь помнит? HELP!
Всем доброго времени ночи! CAMFORT - разновидность бейсика-интерпретатора, заточенная под...

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

Кто помнит когда был последний раз зеркальщик?
Кто помнит когда был последний раз зеркальщик?

Надо ли перейти от асм к с++?
Я знаю, что начинающие бывают надоеливо смешными с своими наивными вопросами, поэтому ответы пусть...

Подскажите, пожалуйста игру, если кто знает или помнит
Не помню как называется, - там бегаешь человеком и можно садиться в робота/меха. Не Titanfall, не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru