реклама на сайте
подробности

 
 
> STM8 IAR ASM объявление переменных
draft3
сообщение May 18 2017, 13:16
Сообщение #1





Группа: Новичок
Сообщений: 3
Регистрация: 6-12-13
Пользователь №: 79 520



Нигде не найду как на ассемблере объявить переменную в среде IAR.
А также где брать подключаемые хедер файлы для портов.

Может у кого есть простая рабочая программка на асме под stm8 в среде IAR?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
draft3
сообщение Jun 8 2017, 14:13
Сообщение #2





Группа: Новичок
Сообщений: 3
Регистрация: 6-12-13
Пользователь №: 79 520



Я читал "IAR Assembler Reference Guide" пытался брать те куски кода которые там приводились но все никак не получается...
особенно непонятно как правильно пользоваться директивой SECTION.
Я так понимаю что нужно обьявить секцию для переменных сначала?
Так значение переменной не меняется:

Код
#include "iostm8.h"
        MODULE  asmmain
        PUBLIC  __iar_program_start
        PUBLIC  main
        EXTERN  CSTACK$$Limit
    
        SECTION `.near_func.text`:CODE//начинается секция кода программ, что там в кавычках?

__iar_program_start:
a1      DC16 0 //двухбайтная переменная инициализируется значением 0
a2      DC16 9 //двухбайтная переменная инициализируется значением 9  
        LDW     X, #0x000600    ; Set stackpointer
        LDW     SP, X
main:  

        LD A,#5//загружаю в А число 5
        LD a1,A// загружаю в переменную a1 значение из А

      END
Go to the top of the page
 
+Quote Post
amiller
сообщение Jun 8 2017, 14:33
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 176
Регистрация: 20-02-14
Из: Томск
Пользователь №: 80 612



Цитата(draft3 @ Jun 8 2017, 18:13) *
Я читал "IAR Assembler Reference Guide" пытался брать те куски кода которые там приводились но все никак не получается...
особенно непонятно как правильно пользоваться директивой SECTION.
Я так понимаю что нужно обьявить секцию для переменных сначала?
Так значение переменной не меняется:

Код
#include "iostm8.h"
        MODULE  asmmain
        PUBLIC  __iar_program_start
        PUBLIC  main
        EXTERN  CSTACK$$Limit
    
        SECTION `.near_func.text`:CODE//начинается секция кода программ, что там в кавычках?

__iar_program_start:
a1      DC16 0 //двухбайтная переменная инициализируется значением 0
a2      DC16 9 //двухбайтная переменная инициализируется значением 9  
        LDW     X, #0x000600; Set stackpointer
        LDW     SP, X
main:  

        LD A,#5//загружаю в А число 5
        LD a1,A// загружаю в переменную a1 значение из А

      END

По моему у Вас всё перепутано.
Вот фрагмент кода, ассемблер редко приходится использовать:
CODE
//-------------------------------------------ПЕРЕМЕННЫЕ---------------------------------------------
SECTION `.noinit`:DATA:NOROOT(2)
DATA
D_NUM DS16 1 ; Серийный номер
D_DAT DS16 1 ; Дата выпуска
dummy DS16 2

//-------------------------------------------КОНСТАНТЫ----------------------------------------------
SECTION `.rodata`:CONST:NOROOT(2)
DATA
;---------------------------------------------------------------------------------------------------
sys_param:
DC16 0, 9999, 1234, 0x90 + T_DEC + F_EXT + F_WRT
DC8 ' Регистр команд '

Синтаксис скорее определяется используемой средой, чем платформой.
В секции, предназначенной для размещения кода, невозможно разместить переменные.
А различия в объявлении должны быть понятны из примера.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 07:52
Рейтинг@Mail.ru


Страница сгенерированна за 0.01397 секунд с 7
ELECTRONIX ©2004-2016