|
Создание и работа с переменными в ассемблере |
|
|
|
Feb 3 2014, 07:11
|
Участник

Группа: Участник
Сообщений: 32
Регистрация: 22-01-13
Пользователь №: 75 284

|
Не могу понять как создавать и работать с переменными разного размера в ассемблере в Keil. Директивы DB, DW, DD выдают ошибку(похоже на то, что Keil их вообще не знает), BYTE, WORD, DWORD - то же самое. Как я понял директивы GBLL, GBLS, GBLA создают (в RAM?) переменную и далее ей можно придать значение используя SETA, SETL, SETS, но при попытке повторно сохранить значение этой переменной получаем ошибку при компиляции, да и не понятно где именно в памяти Keil разместит переменную. Можно конечно сделать так Var0 EQU 0x(адрес переменной в памяти), но есть ли другие(более удобные) способы ? И как вообще принято это делать?
|
|
|
|
|
 |
Ответов
|
Feb 3 2014, 07:27
|

Гуру
     
Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954

|
Цитата(allsettingsdone @ Feb 3 2014, 11:11)  Директивы DB, DW, DD выдают ошибку(похоже на то, что Keil их вообще не знает), BYTE, WORD, DWORD - то же самое. DCB, DCW, DCWU, DCD, DCDU....
|
|
|
|
|
Feb 3 2014, 07:54
|
Участник

Группа: Участник
Сообщений: 32
Регистрация: 22-01-13
Пользователь №: 75 284

|
Цитата(Палыч @ Feb 3 2014, 09:27)  DCB, DCW, DCWU, DCD, DCDU.... Вот допустим я делаю счетчик, пишу test0 DCWU 0xFFFF Затем уменьшаю на 1 ( MOV32 R0, #test0 SUB R0, #1) Её сохранять обратно в память таким образом? - STR R0, [#test0] ? Компилятор выделит память под 4 байта?
|
|
|
|
|
Feb 3 2014, 08:39
|
Знающий
   
Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725

|
Цитата(allsettingsdone @ Feb 3 2014, 08:54)  Вот допустим я делаю счетчик, пишу test0 DCWU 0xFFFF Затем уменьшаю на 1 ( MOV32 R0, #test0 SUB R0, #1) Её сохранять обратно в память таким образом? - STR R0, [#test0] ? Компилятор выделит память под 4 байта? DCWU это и есть "выделение" памяти. Вы не сообщили, зачем именно ассемблер, но одним из лозунгов ARM при введении Cortex и ПО к нему (CMSIS, периферийных библиотек производителей) было типа "no assembler".
|
|
|
|
Сообщений в этой теме
allsettingsdone Создание и работа с переменными в ассемблере Feb 3 2014, 07:11  demiurg_spb Цитата(allsettingsdone @ Feb 3 2014, 10:5... Feb 3 2014, 08:12  Golikov A. Цитата(allsettingsdone @ Feb 3 2014, 11:5... Feb 3 2014, 08:37   scifi Цитата(KnightIgor @ Feb 3 2014, 12:39) Вы... Feb 3 2014, 09:22  romas2010 Цитата(allsettingsdone @ Feb 3 2014, 11:5... Feb 12 2014, 20:06   scifi Цитата(romas2010 @ Feb 13 2014, 00:06) 2)... Feb 12 2014, 20:12    ohmjke Цитата(scifi @ Feb 13 2014, 00:12) С огов... Feb 14 2014, 05:46     scifi Цитата(ohmjke @ Feb 14 2014, 09:46) Имеет... Feb 14 2014, 06:14 allsettingsdone Цитата(Палыч @ Feb 3 2014, 09:27) DCB, DC... Feb 3 2014, 10:46 SII Цитата(allsettingsdone @ Feb 3 2014, 11:1... Feb 3 2014, 10:16 toweroff Ну как сказать... с нулевой оптимизацией в Keil 5 ... Feb 14 2014, 10:03 ViKo Цитата(toweroff @ Feb 14 2014, 13:03) Опт... Feb 14 2014, 10:30
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|